Commit Graph

27 Commits

Author SHA1 Message Date
2864c7be53 Minor refactoring, added OP_GETMETHOD
You can use ':' without invoking. So you can grab a method binding to an object and later call it. Also some GC bugs were fixed.

A new preprocessor macro (VM_DEBUG) has been added. Defining this macro will print each instruction thats being executed in the VM, as
well as print each call.
2021-01-16 15:40:58 -06:00
e995bb75fb added tonumber() and tostring() to base lib 2021-01-13 14:13:55 -06:00
ab86e19cfe Added ':' invoke operator
You're now forced to use ':' when calling a method on an object. Some of Lua's ideas really are just better in practice /shrug
2021-01-12 17:46:22 -06:00
c510c9aebf Minor table refactor, added cosmoV_compileString and loadstring() to baselib
cosmoV_compileString is recommended since it'll push the result (<error> or <closure>) onto the stack.

also, fixed some GC-related bugs, so yay!
2021-01-10 14:38:53 -06:00
824c0e89b9 Dictionaries -> Tables
Tables are going to become a more generic form of data storage. While objects will be "stateful", tables will remain static.

'{}' now refers to an object declaration, '[]' will be reserved for tables.
2021-01-08 14:37:36 -06:00
1351ff63b1 Added CObj->proto support, state->protoObjects defines default protos for each COBJ type
a lot of refactoring in the VM
2021-01-07 19:50:36 -06:00
860f30f201 removed printStack() from cosmoB_pcall() 2021-01-05 22:46:04 -06:00
eb2f50e456 Added CObjError, cosmoV_throw(), pcall(), and cosmoV_printError()
Errors are now handled very differently, parser errors and VM errors are now treated the same.
When cosmoV_error is called, cosmoV_throw is also called, which formats the error object and sets the panic state.
state->error now points to the latest CObjError when state->panic is true. To get a nice formatted Objection message, use
cosmoV_printError() and pass the state->error. pcall() was added to the standard base library. When called, the first argument
passed is called with the subsequent arguments given. If the call completed successfully, `true`,`nil` is returned. However
when an error occurs during the call, `false`,`<error>` is returned. Simply print the `<error>` to retrieve the error string.
2021-01-05 22:27:59 -06:00
adb2381b4f added __tostring IString, added expressionPrecedence() to cparse.c
additional minor refactoring
2021-01-03 17:33:10 -06:00
cb1d287c93 added type() to baselib 2021-01-02 14:33:11 -06:00
7e9b61e018 minor refactor, fixed many warnings 2021-01-01 23:06:24 -06:00
e253129e50 added string.sub() 2020-12-31 02:26:06 -06:00
9012f9231b Added assert() to base library
also fixed regression in call()
2020-12-27 13:36:17 -06:00
de3a89ad4f cosmoV_register now uses the stack to pass params 2020-12-19 21:15:12 -06:00
f6aaeb3417 fixed typos 2020-12-19 13:32:43 -06:00
48ceca1834 multiple return value support added to VM 2020-12-12 21:53:12 -06:00
ec8f5e7e4f added foreach() 2020-12-12 18:16:31 -06:00
d00b803e6f added __setter and __getter 2020-12-06 14:11:33 -06:00
e0d51c191f renamed cosmoV_makeObject 2020-12-05 17:55:09 -06:00
c7be39a5d4 renamed metaobjects to protoobjects 2020-11-15 12:22:11 -06:00
9ebae876f6 minor refactoring, OP_INVOKE performance boost 2020-11-13 17:39:47 -06:00
71d3a8e1c4 added cosmoV_error 2020-11-13 12:54:06 -06:00
08b6dcbf4c CObjMethod refactor 2020-11-12 23:04:09 -06:00
279714f3e0 added push wrappers 2020-11-12 17:17:41 -06:00
c42a72dfad Major refactoring, added classes, many bug fixes 2020-11-09 19:44:12 -06:00
fe93a0b715 better GC debugging, added base object for tables 2020-11-02 22:32:39 -06:00
2e1b745624 Initial commit 2020-10-28 00:16:30 -05:00