Commit Graph

58 Commits

Author SHA1 Message Date
unknown d27d94975e fixed MSVC support 2023-06-01 22:22:44 -05:00
CPunch 9537a2c7b8 major main.c refactoring
- now takes command line arguments:
Usage: ./bin/cosmo [-clsr] [args]

available options are:
-c <in> <out>   compile <in> and dump to <out>
-l <in>         load dump from <in>
-s <in...>              compile and run <in...> script(s)
-r                      start the repl
2023-05-28 20:52:12 -05:00
CPunch e335fd95d6 minor formatting fixes 2023-02-09 12:52:36 -06:00
CPunch 6056f8eb5b added clang-format 2023-02-09 12:32:48 -06:00
CPunch d13cc398c8 Added os.system() to the os.* library 2021-03-20 01:02:13 -05:00
cpunch 3890c9dd1e Refactored cosmoO_equals
This sets up room for the '__equal' metamethod to be added

- cosmoO_equals now requires the state to be passed
- cosmoV_equals now requires the state to be passed
- cosmoT_get now requires the state to be passed
2021-02-19 17:04:23 -06:00
Inversion 1eec23035f Temporary fix for possible bug 2023-11-03 22:55:19 -05:00
Inversion fec26ac380 Add optional custom error message to assert 2023-11-03 22:55:09 -05:00
cpunch 7a6e00be41 Added math.rad() and math.deg() 2021-02-15 14:06:43 -06:00
cpunch 14b091b691 Added trig. functions to the math library 2021-02-15 14:00:26 -06:00
cpunch 1fff6c7fe9 Added string.rep() to the string library 2021-02-13 19:07:47 -06:00
cpunch 33da88a18a Minor cbaselib.c cleanup 2021-02-11 00:58:12 -06:00
Inversion 50b19e9f4f Added argument type check to string.len 2023-11-03 22:55:03 -05:00
Inversion 472a0ea4c1 Updated baselib in accordance with cosmoV_readCString 2023-11-03 22:54:56 -05:00
Inversion 8b931fa4a7 Add string.len to base library 2023-11-03 22:54:45 -05:00
Inversion ce844dc110 Added error to the base library 2023-11-03 22:53:59 -05:00
cpunch 24bbc22cd4 Minor os.read() fixes 2021-02-10 17:11:52 -06:00
cpunch cfb4df66f9 Added optional os.* library, fixed cosmoB_loadLibrary
- os.time() returns the UNIX Epoch time in seconds
- os.read() reads file and returns the data as a <string> object
2021-02-10 17:10:03 -06:00
CPunch 78e21a0f28 refactored cosmoV_set & cosmoV_get, renamed COSMO_TOBJ->COSMO_TREF
also changed print() to print raw primitives instead of generating a <string> needlessly. helped performance immensely in scripts like `examples/increment.cosmo`
2021-02-07 14:32:39 -06:00
CPunch 0d344f65df renamed cosmoV_pushObj->cosmoV_pushRef & cosmoV_newObj->cosmoV_newRef 2021-02-07 14:05:53 -06:00
CPunch 8d37f1f243 Renamed cosmoV_readObj to cosmoV_readRef to reduce ambiguity
also fixed several typos
2021-02-07 14:00:00 -06:00
CPunch 5faa40bdef Minor CObj* refactor, added cosmoO_lock and cosmoO_unlock
- cosmoO_getUser* and cosmoO_setUser* no longer take the `CState*` argument
- if a set is performed on a locked object an error is thrown
2021-02-06 18:51:47 -06:00
CPunch 2f9ff08cd3 Added object.* library; added cosmoO_isDescendant to cobj.[ch]
The object library includes:
- __proto getter and setter tables (might make an option to lock __proto in the future)
- ischild()

cosmoB_loadDebug was renamed to cosmoB_loadVM and now only loads the VM library
2021-02-03 13:43:26 -06:00
CPunch 88d41d7db8 Fixed minor GC freeze bug in pcall() 2021-02-03 13:03:24 -06:00
CPunch ff1804ca36 Removed .charAt(), added .char() & .byte()
- also minor comment fixes in cobj.[ch]
2021-02-01 21:07:43 -06:00
CPunch 300ffb89e9 Added basic math.* library, fixed number lexer edgecase
- also added vm.collect() to the vm library
2021-01-29 15:45:24 -06:00
CPunch cff26574bb Fixed table iteration bug, added vm.globals to debug lib 2021-01-25 16:14:51 -06:00
CPunch cd6744ab65 Minor refactor, added vm.* library
- cosmoV_pushObj() has been added
- cbaselib.h has been cleaned up a bit
2021-01-25 15:04:16 -06:00
CPunch 185e6027e7 whoops 2021-01-19 22:56:52 -06:00
CPunch 71e9331551 Minor baselib.c refactor; added string.charAt() 2021-01-19 22:54:06 -06:00
CPunch 3c19079262 Added string.split() & string.find() 2021-01-17 14:07:30 -06:00
CPunch 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
CPunch e995bb75fb added tonumber() and tostring() to base lib 2021-01-13 14:13:55 -06:00
CPunch 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
CPunch 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
CPunch 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
CPunch 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
CPunch 860f30f201 removed printStack() from cosmoB_pcall() 2021-01-05 22:46:04 -06:00
CPunch 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
CPunch adb2381b4f added __tostring IString, added expressionPrecedence() to cparse.c
additional minor refactoring
2021-01-03 17:33:10 -06:00
CPunch cb1d287c93 added type() to baselib 2021-01-02 14:33:11 -06:00
CPunch 7e9b61e018 minor refactor, fixed many warnings 2021-01-01 23:06:24 -06:00
CPunch e253129e50 added string.sub() 2020-12-31 02:26:06 -06:00
CPunch 9012f9231b Added assert() to base library
also fixed regression in call()
2020-12-27 13:36:17 -06:00
CPunch de3a89ad4f cosmoV_register now uses the stack to pass params 2020-12-19 21:15:12 -06:00
CPunch f6aaeb3417 fixed typos 2020-12-19 13:32:43 -06:00
CPunch 48ceca1834 multiple return value support added to VM 2020-12-12 21:53:12 -06:00
CPunch ec8f5e7e4f added foreach() 2020-12-12 18:16:31 -06:00
CPunch d00b803e6f added __setter and __getter 2020-12-06 14:11:33 -06:00
CPunch e0d51c191f renamed cosmoV_makeObject 2020-12-05 17:55:09 -06:00