Sage Vaillancourt
f458b52a17
Add refcount to StaticFunction.
...
Small appendf() macro for object-stringing.
2022-04-18 09:59:57 -04:00
Sage Vaillancourt
b0e89cafd4
Toying with a more optimized function representation.
...
Starting with just struct accesses.
2022-04-14 16:05:46 -04:00
Sage Vaillancourt
83b1b9212e
Fix no-context error-handling.
...
Centralize parts of number-parsing.
2022-04-14 16:04:25 -04:00
Sage Vaillancourt
3f4d8fd7af
Start dropping support for semicolon separators.
...
Simplify some error functions.
Oh, right. strdup() exists.
2022-04-14 00:31:51 -04:00
Sage Vaillancourt
e326af38f8
Allow number indexing of struct fields.
...
Better error messages on failed struct access.
2022-04-13 16:57:58 -04:00
Sage Vaillancourt
54410030f7
Add throw() macro.
...
Simplifies the creation of complex error messages.
2022-04-13 15:17:59 -04:00
Sage Vaillancourt
d9d2bca8c8
Some optimization attempts in progress.
...
Toying with a more efficient native-function-use implementation.
Replace getErrorCode with a macro.
Store initial slice array on the stack, mallocing at the end.
2022-04-12 22:42:41 -04:00
Sage Vaillancourt
96d759a7e6
Merge branch 'master' of https://gitlab.com/sagev9000/pebblisp
2022-04-11 20:44:38 -04:00
Sage Vaillancourt
48b1f3c54b
Correcting some REPL behavior.
...
Add BuildListNamed() macro for optimized list creation.
2022-04-11 20:43:45 -04:00
Sage Vaillancourt
7b014ebafa
Fix (reduce) with lambdas.
...
Fix await memory leak.
Allow running specific tests with --run-test x (for valgrinding).
2022-04-11 16:38:49 -04:00
Sage Vaillancourt
85fb91b4ed
Use stripped Objects in hash.c
...
These lack the unused .forward field, reducing table memory by ~25%.
Also bump Object.number up to a long, and add a generic Object.data field.
2022-04-08 11:49:14 -04:00
Sage Vaillancourt
056ea9eb13
Implement simple fn docstrings.
...
Adds usage of this new feature for pebblisp.pbl's (alias).
2022-04-08 00:36:12 -04:00
Sage Vaillancourt
7a0433aa68
Add funcyEval() for equivalent Func/Lambda eval.
...
Still a bit buggy.
Some general renaming for clarification.
2022-04-07 01:20:59 -04:00
Sage Vaillancourt
4d215b1b79
Add simple sigint handler for repl.
...
inline evalLambdaArgs() and evalBuiltIns()
2022-04-06 16:55:49 -04:00
Sage Vaillancourt
abaf3a1ddc
Use plfunc name in type-error messages.
...
Previously used the name of the C function.
2022-04-06 09:55:31 -04:00
Sage Vaillancourt
deca6045ff
More useful type-error messages.
...
BAD_PARAMS_ON -> BAD_PARAMS
Replace printType() with getTypeName().
Use --ignore-config in testing.
Add type-checking (and missing clone) to (await).
2022-04-06 09:51:53 -04:00
Sage Vaillancourt
b54b93c7d1
Add simple Promise type.
...
A bit unstable. Almost certainly needs some locking on struct Promise fields.
2022-04-05 23:53:17 -04:00
Sage Vaillancourt
fc4f0bef28
Move main() etc. into main.c
2022-04-05 20:05:58 -04:00
Sage Vaillancourt
61b9f79c36
Pull segfault-handling into a dedicated function and ifdef.
...
Some stringing tweaks.
2022-04-05 16:41:23 -04:00
Sage Vaillancourt
b419826b8e
More robust addToTable().
...
Add several pl string functions: `slen`, `chars`, `matches`, and `substr`.
Add support for comments in native tests.
2022-04-05 15:30:30 -04:00
Sage Vaillancourt
caaa6c53f6
Add simple object hashtable for env.
...
Currently has some issues with accessing parameters in recursive calls.
2022-04-04 14:15:44 -04:00
=
343568afda
Merge branch 'master' of https://gitlab.com/sagev9000/pebblisp
2022-04-02 11:51:58 +01:00
=
323b3113d7
Patch to compile for Pebble devices.
...
Mostly throwing ifdef Standalone all over the place.
2022-04-02 11:51:06 +01:00
Sage Vaillancourt
13fa4ce54f
More cd-related sugar.
...
Add preprocess pl func for repl.
Add basic aliases to repl.
2022-04-02 04:57:53 -04:00
Sage Vaillancourt
1a13fe4814
Add `unused` macro.
...
Prefer malloc() over calloc() in env.c
2022-04-01 15:07:19 -04:00
Sage Vaillancourt
980a1c42ab
Add (cd) and (cwd).
...
Handle quotes in printColored().
2022-03-31 21:31:24 -04:00
Sage Vaillancourt
b770a618e0
Simpler listEvalFunc() implementation.
...
Simpler simpleFuncEval(), which should eventually be removed, anyway.
- Something with it or (reduce) is a bit leaky, but actually less so than before.
Small plfunc.c reordering.
2022-03-31 15:44:18 -04:00
Sage Vaillancourt
2fb6643326
A bit of cleanup and warning-hushing.
2022-03-31 14:12:52 -04:00
Sage Vaillancourt
fb2e1811ff
Rename possessive to structAccess.
...
Gives better error messages.
Use typical type-checking in structAccess.
Make checkTypes() more global, and move to pebblisp.c
2022-03-31 12:09:23 -04:00
Sage Vaillancourt
32e21bf758
Replace (struct's field) with (struct.field)
...
It was cute, but hard to read in space-delimited lists.
Convert (map) to a normal pl function.
Add trueObject() falseObject() macros.
2022-03-31 10:29:10 -04:00
Sage Vaillancourt
f2742e8411
Add (env var_name)
...
Add make: release
2022-03-30 16:47:54 -04:00
Sage Vaillancourt
d76e3f5341
Make (def) a normal function.
...
Remove (defe) for now.
2022-03-30 16:32:42 -04:00
Sage Vaillancourt
75ba0ac5ee
Dedicated getPrompt() function.
...
Can now handle strings or lambdas.
2022-03-30 14:41:53 -04:00
Sage Vaillancourt
92daee1d0d
Skip past func-y objects in REPL, too.
2022-03-29 23:01:50 -04:00
Sage Vaillancourt
f48e1bf5c9
REPL defers to sh when a symbol isn't found.
2022-03-29 22:51:13 -04:00
Sage Vaillancourt
32a2254da9
Tweak some help text.
2022-03-29 16:44:21 -04:00
Sage Vaillancourt
857219a4e8
Remove readFromEnvironment().
...
Something about it was buggy. Might be worth coming back to.
2022-03-29 16:31:23 -04:00
Sage Vaillancourt
f12d8bea7f
Start reading from HOME/.pebblisp.pbl for config.
2022-03-29 16:06:57 -04:00
Sage Vaillancourt
2b09187a94
Add readFromEnvironment() for reading without cloning.
...
Define the REPL prompt in the environment.
2022-03-29 15:49:53 -04:00
Sage Vaillancourt
79a2d09995
Adjust repl to allow dropping the parens around `?`
...
`?` with no arg also returns its own help text.
Improve web help texts.
2022-03-29 15:30:28 -04:00
Sage Vaillancourt
803935c637
Move help directly into env.
...
Fix repl leak.
2022-03-29 15:09:36 -04:00
Sage Vaillancourt
a444bc11bb
Use dynamically-sized strings for stringObj.
...
Fix webby.pl's `reduce` usage and web.c's struct creation.
2022-03-29 14:01:44 -04:00
Sage Vaillancourt
af7a2e6265
Cleanup and a couple (micro) optimizations.
2022-03-28 23:51:05 -04:00
Sage Vaillancourt
66a07e395c
Add some runtime type-checking.
...
Adjust simple-ops structure.
2022-03-28 13:19:44 -04:00
Sage Vaillancourt
e22e022cd8
Reference count strings.
2022-03-28 09:56:34 -04:00
Sage Vaillancourt
34032cb1c6
Simplify Environment struct.
...
Fill in envForLambda with errorObjects if not enough are provided.
Move addStructDef() into env.c
Add dedicated Dictionary struct to env.c
env->size -> env->capacity
2022-03-27 18:52:56 -04:00
Sage Vaillancourt
9a454e6a30
Small optimizations and cleanup.
2022-03-27 00:03:34 -04:00
Sage Vaillancourt
158c21f441
Reference count LAMBDAS.
...
Remove more unused code/checks.
Simplify evalList (though it could use more work).
2022-03-26 19:51:52 -04:00
Sage Vaillancourt
5226640fb6
Some stringing cleanup and unused code removal.
2022-03-26 12:54:38 -04:00
Sage Vaillancourt
502b9349fe
Fix some busted tests.
...
Better styling of native test printing.
Add `detail` parameter to runTests().
2022-03-25 16:11:25 -04:00