Commit Graph

176 Commits

Author SHA1 Message Date
155e0829fb minor refactoring 2023-06-03 01:39:35 -05:00
2b3825d258 implemented jump table dispatch
- currently only enabled on supported platforms (GNU C Compiler + Clang)
- when enabled, sped up examples/fibtest.cosmo by about 20% (avg of 11.179s prior and 8.799 after)

NOTE: malicious dumps can trivially cause crashes now by having junk function chunks
2023-06-03 01:17:28 -05:00
7bca6927a9 fixed formatting 2023-06-01 22:28:07 -05:00
d3647c161b added vm.disassemble() 2023-06-01 19:04:12 -05:00
d27d94975e fixed MSVC support 2023-06-01 22:22:44 -05:00
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
c44dc88972 minor stack fixes 2023-05-28 12:19:52 -05:00
d581e68166 proper error handling for dump edgecases 2023-05-28 12:16:00 -05:00
2271681cec undef macros 2023-05-28 12:03:49 -05:00
cf18bbbe54 fixed GC bug in cundump.c 2023-05-28 11:55:48 -05:00
3a872fb83f these values can be defined at the top of the function 2023-05-28 00:08:28 -05:00
4ed1c79b50 formatting changes 2023-05-28 00:03:50 -05:00
635f31863f cvm.c: added cosmoV_undump 2023-05-27 23:16:47 -05:00
49a7f68239 cdump.c: major refactoring; various fixes 2023-05-27 23:15:58 -05:00
8efecf71a4 cdump.c: fix instruction and line info dumping 2023-05-27 23:15:12 -05:00
395f352c6e started cundump.c:cosmoD_undump(); minor fixes 2023-05-25 21:12:21 -05:00
65d37838cd started cdump.c:cosmoD_dump() 2023-05-25 19:41:13 -05:00
3b13ae1624 minor refactoring and typos 2023-05-25 19:40:15 -05:00
d1a16d990c removed stale COBJ_STREAM usage 2023-05-25 18:34:39 -05:00
8ac8085d20 syntax: 'var'->'let' 'function'->'func'
- 'var' has some weird scoping connotations with users of JS. better to change it to 'let', which will decide whether to make the variable a local or a global
- 'func' looks visually appealing lol
- some minor refactoring done in cparse.c
2023-02-09 15:58:25 -06:00
e335fd95d6 minor formatting fixes 2023-02-09 12:52:36 -06:00
b902ac90de removed CObjStream 2023-02-09 12:42:09 -06:00
6056f8eb5b added clang-format 2023-02-09 12:32:48 -06:00
7b5825668d Added boilerplate for CObjStream 2021-03-20 01:44:03 -05:00
d13cc398c8 Added os.system() to the os.* library 2021-03-20 01:02:13 -05:00
55e6453589 Improved cosmoO_equals performance for strings 2021-02-23 11:49:57 -06:00
c83dca2ab2 Added '__equal' metamethod, slightly refactored cosmoO_equal
- ISTRING_EQUAL has been added
2021-02-20 12:42:13 -06:00
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
40739e9bea cparse.c now throws an error on illegal statements 2021-02-19 12:47:12 -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
35466f691f Added C99 support, refactored headers 2021-02-15 16:20:04 -06:00
7a6e00be41 Added math.rad() and math.deg() 2021-02-15 14:06:43 -06:00
14b091b691 Added trig. functions to the math library 2021-02-15 14:00:26 -06:00
5c71efbe40 Added OP_POW to cdebug.c; refactored cosmoV_registerProtoObject
- cosmoV_registerProtoObject now walks the object list and updates the proto's for objects of the objType which have a NULL proto.
- misc. comment changes in cvm.h as well.
2021-02-13 20:08:35 -06:00
1fff6c7fe9 Added string.rep() to the string library 2021-02-13 19:07:47 -06:00
fdd0d19308 Added CMake support
should make integration into visual studio easier for people
2021-02-11 20:34:04 -06:00
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
76574c7860 Added cosmoV_readCString for convenience 2023-11-03 22:54:51 -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
1539a7e676 Added power operator '^', added OP_POW
- added TOKEN_CARROT to clex.[ch]
2021-02-10 17:26:20 -06:00
24bbc22cd4 Minor os.read() fixes 2021-02-10 17:11:52 -06:00
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
7db0782991 Added support for multiline comments using '/*' and '*/' 2021-02-10 15:39:36 -06:00
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
0d344f65df renamed cosmoV_pushObj->cosmoV_pushRef & cosmoV_newObj->cosmoV_newRef 2021-02-07 14:05:53 -06:00
8d37f1f243 Renamed cosmoV_readObj to cosmoV_readRef to reduce ambiguity
also fixed several typos
2021-02-07 14:00:00 -06:00