e7b2d7d833
cbaselib.c:fileB_read() fix MSVC warnings
2023-12-27 21:12:12 -06:00
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
5296495e47
formatting fixes
2023-12-26 10:59:42 -06:00
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
7f5e3ae8dc
lol oops
2023-11-03 22:59:31 -05:00
7a54230cb9
hated the styling of this
...
consistency is nice to have
2023-11-03 22:36:59 -05:00
1a7d6caec6
fix __proto object getter
2023-09-11 22:17:35 -05:00
1678194941
minor refactoring
2023-09-06 20:23:18 -05:00
3ea653b26d
added file:write() & an optional mode
param to os.open()
2023-09-06 17:29:38 -05:00
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
bfdd33e01d
fix vm.collect()
...
we don't freeze the vm on entry to C functions now
2023-08-26 15:03:56 -05:00
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
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
f76f2ffa92
refactoring and cleanup
...
cosmoB_loadOSLib -> cosmoB_loadOS
2023-08-24 23:36:32 -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
e335fd95d6
minor formatting fixes
2023-02-09 12:52:36 -06:00
6056f8eb5b
added clang-format
2023-02-09 12:32:48 -06:00
d13cc398c8
Added os.system() to the os.* library
2021-03-20 01:02:13 -05: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
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
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
1fff6c7fe9
Added string.rep() to the string library
2021-02-13 19:07:47 -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
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
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
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
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
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
88d41d7db8
Fixed minor GC freeze bug in pcall()
2021-02-03 13:03:24 -06:00
ff1804ca36
Removed .charAt(), added .char() & .byte()
...
- also minor comment fixes in cobj.[ch]
2021-02-01 21:07:43 -06:00
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
cff26574bb
Fixed table iteration bug, added vm.globals to debug lib
2021-01-25 16:14:51 -06:00
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
185e6027e7
whoops
2021-01-19 22:56:52 -06:00
71e9331551
Minor baselib.c refactor; added string.charAt()
2021-01-19 22:54:06 -06:00
3c19079262
Added string.split() & string.find()
2021-01-17 14:07:30 -06:00
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