090cc62cce
Added variadic functions
...
TOKEN_DOT_DOT_DOT was added to the lexer
variadic.cosmo was added to the examples directory
2020-12-26 22:01:22 -06:00
db8ed21746
fixed typo in 'break' and 'continue' err. msg
2020-12-24 13:55:27 -06:00
a408353c25
added "break" and "continue" statements
...
a LoopState was added to the CCompilerState struct which keeps track of breaks, start chunk index, and the start scope of the active loop.
Also, break.cosmo was added to the examples directory, 'continue' and 'break' work as expected.
2020-12-24 00:41:00 -06:00
31a852a127
Added cosmoV_pushFString(), and cosmoO_pushVFString().
...
cosmoV_error now pushes the error string onto the stack, as well as uses cosmoO_VFString to format strings.
cosmoV_concat is now entirely self contained, and is now stack based. Push the CValues you want to concat into strings onto the stack and call cosmoV_concat with the # of values you pushed.
2020-12-22 15:13:11 -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
0beeee0fdf
Added dictionary support to OP_ITER
...
ISTRING_RESERVED was added to iStrings
call & callCFunction now use memmove instead of memcpy
Additionally, added cosmoO_setUserP, cosmoO_getUserP, cosmoO_setUserI and cosmoO_getUserI to the C API.
2020-12-17 19:44:04 -06:00
b2c1f73e01
moved the results cap check in callCFunction
2020-12-16 03:58:56 -06:00
eede892eb0
made OP_ITER and OP_NEXT use CObjMethods
2020-12-16 03:51:50 -06:00
e5eca7bed6
Added iterable objects
...
__iter and __next are now reserved IStrings, OP_NEXT and OP_ITER have also been added. A new token (TOKEN_IN) has been added to the lexer. The parser now supports the for each loop (for i, ... in <object> do ... end).
savedPushed has been removed from the CCompilerState struct.
2020-12-15 21:21:51 -06:00
4f3f594b82
added multiple return value support to the parser
2020-12-14 14:38:46 -06:00
48ceca1834
multiple return value support added to VM
2020-12-12 21:53:12 -06:00
bf59f70598
added IS_METHOD to IS_CALLABLE
2020-12-12 21:17:31 -06:00
ec8f5e7e4f
added foreach()
2020-12-12 18:16:31 -06:00
219a87c79c
added IS_DICT()
2020-12-12 17:36:55 -06:00
d03175c9c5
OP_COUNT expects a dictionary
2020-12-12 17:34:54 -06:00
b1facfc92f
smarter caching
2020-12-09 20:46:20 -06:00
181ef8a18c
Added dictionaries {}
...
Objects are now separate from {} dictionaries
the . operator now only indexes fields on objects, the [] operator can only be used on objects if the __index or __newindex functions are defined
Additionally 4 new instructions have been added to the VM: OP_NEWDICT, OP_INDEX, OP_INCINDEX, and OP_NEWINDEX.
The syntax to create a dictionary is as follows { <key> : <value>, <otherkey> : <othervalue> } eg. { "hello" : "world", "foo" : 1337 }
The Lexer & Parser was extended to add the TOKEN_COLON ':' token.
2020-12-09 20:32:42 -06:00
6445dae04c
added module names for functions
2020-12-09 12:23:16 -06:00
9aa7fa1381
replaced facttest.lua with fibtest.lua
...
Optimized the NaN box to be byte aligned, performance under the fibtest.lua script improved by ~2.5 seconds (~31 before ~28.5 after on cpunch's machine)
also cleaned up some misc. comments
2020-12-07 23:26:55 -06:00
f8a062919f
added cosmoM_addRoot & cosmoM_removeRoot
2020-12-07 15:53:23 -06:00
aff011a8d1
minor refactoring
2020-12-07 14:35:14 -06:00
d00b803e6f
added __setter and __getter
2020-12-06 14:11:33 -06:00
005e2acd1e
added cosmoO_setUserData and cosmoO_getUserData
2020-12-06 13:38:05 -06:00
9ca67c8408
changed class -> proto
2020-12-05 17:58:56 -06:00
e0d51c191f
renamed cosmoV_makeObject
2020-12-05 17:55:09 -06:00
3a18d14a80
removed stale comments
2020-12-04 12:30:01 -06:00
d154d71163
improved nan box performance
2020-12-04 12:19:07 -06:00
b936827cc6
added support for NaN boxing (8 byte CValues!)
2020-12-04 00:04:14 -06:00
495f1d7272
more minor refactoring
2020-11-30 12:50:55 -06:00
0f138abedd
minor refactoring
2020-11-30 12:40:36 -06:00
08c640cd58
added # operator, improved error messages
2020-11-30 12:32:04 -06:00
9dcd1c909a
fixed needless pop in _main chunk
2020-11-27 19:42:00 -06:00
fe2bcf8ae6
fixed GC bug, extended strings
2020-11-27 19:34:54 -06:00
e784933517
fixed lexer errors
2020-11-26 12:54:45 -06:00
9ccb258a93
added special character support to strings
2020-11-26 12:48:36 -06:00
0745fd10a9
extended lexer, fixed table shrinking
2020-11-25 23:34:02 -06:00
bb11b3b309
added support for __newindex
2020-11-24 15:16:37 -06:00
6d45c0a676
fixed __index
2020-11-20 15:10:49 -06:00
85e7deae7b
better support for OP_INCOBJECT
2020-11-20 14:50:43 -06:00
46b99ab390
minor refactoring, added inc and dec operators
2020-11-19 14:41:21 -06:00
3727d6bb7c
OP_NEWOBJECT uses long operand
2020-11-18 14:35:58 -06:00
4c4b5eae8d
refactored stress test
2020-11-17 15:13:51 -06:00
aaed92424f
CObjMethod refactor
2020-11-17 15:07:56 -06:00
e6a377dfd0
added comments
2020-11-17 14:39:02 -06:00
c1854bdcf1
shrink based on count
2020-11-17 14:34:30 -06:00
7182f5ccd1
do GC before table array is allocated
2020-11-17 14:32:20 -06:00
329d34aa43
fixed clang warnings
2020-11-17 13:17:23 -06:00
ef8218996c
fix clang warning
2020-11-17 03:38:00 -06:00
1189dc4b78
correctly mark tombstones
2020-11-17 03:36:56 -06:00
1329b72fcd
fixed GC bug
2020-11-17 03:10:55 -06:00
204bec3d0a
added IStrings, added __index functionality
2020-11-16 19:58:16 -06:00
c7be39a5d4
renamed metaobjects to protoobjects
2020-11-15 12:22:11 -06:00
928b01f52c
added some comments
2020-11-13 17:45:14 -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
40ae495aaf
added input() to repl
2020-11-12 20:06:38 -06:00
279714f3e0
added push wrappers
2020-11-12 17:17:41 -06:00
ffe4fc6930
disabled debug features by default
2020-11-12 17:02:12 -06:00
01b796460a
refactored internal strings
2020-11-12 16:52:56 -06:00
0e92ddea2b
fixed invalid objection string
2020-11-12 16:27:50 -06:00
93130ede65
fixed another stack error
2020-11-12 16:23:56 -06:00
65662e94f2
fixed stack error
2020-11-11 23:10:53 -06:00
c42a72dfad
Major refactoring, added classes, many bug fixes
2020-11-09 19:44:12 -06:00
aa975b7330
minor refactoring + non-zero int fixed
2020-11-05 19:53:55 -06:00
4cd5c89d28
extended lexer to support 'this'
2020-11-05 18:43:21 -06:00
ffa6ca22e3
+NUM to getValueHash()
2020-11-04 21:37:45 -06:00
64c6914748
marked objects in GC
2020-11-04 21:37:34 -06:00
185380b2c0
removed unused code
2020-11-03 22:19:48 -06:00
293bab307b
files ran from cli now have baselib again
2020-11-03 22:18:55 -06:00
e1d33855c3
added basic objects
2020-11-03 22:10:51 -06:00
fe93a0b715
better GC debugging, added base object for tables
2020-11-02 22:32:39 -06:00
a15c8d67a1
repl now shares state
2020-10-28 18:38:50 -05:00
8e71cab642
fixed segfault on parser objection
2020-10-28 18:29:50 -05:00
2e1b745624
Initial commit
2020-10-28 00:16:30 -05:00