Commit Graph

265 Commits

Author SHA1 Message Date
CPunch 5711ca218e improved readme, added asciinema demo 2023-12-29 18:18:22 -06:00
CPunch 5cd3049d66 cdebug: added cosmoG_disassemble
for now cosmo will disassemble each script before running
2023-12-29 18:17:52 -06:00
CPunch cd37cfdae5 cparse: removed stale expressionStatement forward declare 2023-12-29 18:01:33 -06:00
cpunch e0455902b0 'return' is now a valid statement outside of a function
lets us do some cool things later. also the repl can print returned values. eg.

`return "hello world"` will print `<string> "hello world"` to the console
2023-12-28 23:41:10 -06:00
cpunch 43d79a456e cparse.c: removed expressionStatement() 2023-12-28 23:27:08 -06:00
cpunch 105a3d70c3 cparse.c: refactoring
- remove declaration(), replace calls with statement()
- fix possible UB in parsePrecedence; no idea how this *wasn't* causing a segfault tbh
2023-12-28 23:20:19 -06:00
cpunch 93f3ae1106 cvm.c:cosmoV_printError -> cosmoV_printBacktrace 2023-12-28 22:56:57 -06:00
cpunch 4816e64612 cvalue.c:printValue renamed to cosmoV_printValue 2023-12-28 22:52:20 -06:00
CPunch 0df56bd42a ctable: hash COBJ_CFUNCTION based on cfunc and not the actual <obj> 2023-12-28 19:56:25 -06:00
cpunch e7b2d7d833 cbaselib.c:fileB_read() fix MSVC warnings 2023-12-27 21:12:12 -06:00
CPunch 39060a67e9 fix cosmoB_loadObjLib()
- wrong # of pairs passed to cosmoV_makeTable
- minor refactoring of cmem.c:sweep()
2023-12-26 12:27:45 -06:00
CPunch 5296495e47 formatting fixes 2023-12-26 10:59:42 -06:00
CPunch a337e26229 added <obj>:keys() method
this method returns a table of keys or 'fields' available in the object
2023-12-25 19:08:04 -06:00
CPunch b7bb0773b1 removed stale WRITE_GLOBAL_OP macro 2023-12-25 19:08:04 -06:00
cpunch 7f5e3ae8dc lol oops 2023-11-03 22:59:31 -05:00
cpunch 7a54230cb9 hated the styling of this
consistency is nice to have
2023-11-03 22:36:59 -05:00
CPunch 1a7d6caec6 fix __proto object getter 2023-09-11 22:17:35 -05:00
CPunch 1678194941 minor refactoring 2023-09-06 20:23:18 -05:00
CPunch 3ea653b26d added file:write() & an optional `mode` param to os.open() 2023-09-06 17:29:38 -05:00
CPunch d3de4c0e66 removed more debug prints 2023-09-05 14:45:03 -05:00
CPunch d66d4807b3 removed debug prints, oops 2023-09-05 14:43:50 -05:00
CPunch 1fcb35168f fix makefile 2023-09-05 14:42:29 -05:00
CPunch 611162b3be documented the new os.open and file objects 2023-09-05 14:41:59 -05:00
CPunch b3587f48a2 added os.open(); new file object
eg.
```lua
local err, file = os.open("LICENSE.md")
if err then
    // do error handling stuff
end

// passing "a" to read() will read the whole file
print(file:read("a"))
```
2023-09-05 14:38:24 -05:00
CPunch bf36412699 removed 'roots', replaced with a registry table
- removed cosmoM_addRoot
- removed cosmoM_removeRoot
- renamed cosmoV_register to cosmoV_addGlobals
- added cosmoV_addRegistry
- added cosmoV_getRegistry
- added cosmoV_setProto
- added cosmoV_isValueUserType
2023-09-05 14:35:29 -05:00
CPunch 6701a63a63 capture freezeGC in CPanic 2023-09-05 02:23:31 -05:00
CPunch ffff01e9d1 build a release build for linux as well 2023-09-04 20:15:15 -05:00
CPunch 89be01aaf6 even more error handling refactoring
removing all of these useless checks has actually made cosmoV_execute just a
lil bit faster :)
2023-09-04 20:14:53 -05:00
CPunch cc9eb4a5ec lol oops 2023-09-01 17:16:10 -05:00
CPunch 789c5210b4 switched to a better linenoise fork
https://github.com/msteveb/linenoise

this version has several benefits, namely win32 support :D
2023-09-01 17:12:39 -05:00
CPunch dfdd97e739 fix artifacts path 2023-09-01 14:43:20 -05:00
CPunch 096d80d8df better repl input, using linenoise 2023-08-31 23:17:13 -05:00
CPunch f7bc8e0471 include util path 2023-08-31 23:16:28 -05:00
CPunch fce568addc whoops, wrong path to the workflow file 2023-08-30 21:30:20 -05:00
CPunch f5e75f09b9 ig that runner doesn't work lol 2023-08-30 21:28:50 -05:00
CPunch fe136f84b5 removed CERROR 2023-08-30 20:14:03 -05:00
CPunch de8cd481c3 allow manual runs 2023-08-30 20:12:06 -05:00
CPunch 6654c3b91c wrong output path for windows build 2023-08-30 20:09:06 -05:00
CPunch 21f7ea5c14 oops 2023-08-30 20:03:30 -05:00
CPunch e1591ae3fd switched from appveyor to github workflow 2023-08-30 20:02:04 -05:00
CPunch bfdd33e01d fix vm.collect()
we don't freeze the vm on entry to C functions now
2023-08-26 15:03:56 -05:00
CPunch c0893b8a14 more refactoring; things seem to work fine
all example scripts run fine with GC_STRESS enabled
2023-08-30 12:00:52 -05:00
CPunch d30bcace9a don't freezeGC during GC cycle 2023-08-29 23:32:25 -05:00
CPunch 6a47c82179 fix more GC bugs 2023-08-29 23:21:52 -05:00
CPunch d41126e75f fix cparse.c gc bug 2023-08-29 23:01:47 -05:00
CPunch 9f19fd4f31 fix this test script 2023-08-29 16:51:04 -05:00
CPunch 6126b50941 cosmoV_throw() now resets the vm stack as well
also a minor GC bug in cosmoO_newError was fixed.

i'm going to try to phase out cosmoM_freezeGC & friends
since that would cause hell with this new
error handling solution. the only thing still using it is the GC.
2023-08-29 16:48:38 -05:00
CPunch 7fa7eb8d94 fixed minor memory leak in cparse
we keep track of internal values used by the parser by pushing them onto the stack
and popping them off once complete.
2023-08-29 15:27:22 -05:00
CPunch 0633e87aa6 WIP: removed stale error handling
currently, scripts seem to run fine. however I'm a bit worried about stack related issues. maybe i'll need to reset state->top as well? but not entirely sure
2023-08-29 14:07:45 -05:00
CPunch 75d27afe2c WIP: major error handling refactoring
switching to setjmp instead of the really bad global 'panic' flag
2023-08-28 21:13:00 -05:00