Calvin Rose
25b7c74089
More work on register allocation and spilling.
...
Setup frontend.janet to show the basics of what is going on. Currently
emitting "fake" instructions just to hash out the idea.
One apparent issue is how we handle register spilling during variable
argument IR instructions (function calls). Arguments should come
_before_ the function call not after.
2024-06-05 17:50:11 -05:00
Calvin Rose
7ea118f248
Begin work on simple x64 backend.
...
Introduce register allocation, spilling, etc. First implementation
will likely emit textual assembly and use a very bad register allocation
algorithm.
2024-06-03 08:35:08 -05:00
Calvin Rose
480c5b5e9d
Change how labels are recorded.
...
Disallow jumping to arbitrary instructions - instead, only allow jumps
to label ids. This will make various transformations and validations
easier since adding or remove instructions does not break jumps.
2024-06-02 09:43:33 -05:00
Calvin Rose
08e6051af8
More work on sysir compiler - basic function calls (without prototypes).
2024-05-15 07:24:15 -05:00
Calvin Rose
8875adf69e
Merge branch 'master' into compile-opt
2024-05-12 16:22:06 -05:00
John W Higgins
ee7362e847
Add ffi/defbind-alias
2024-05-09 21:31:22 -07:00
Calvin Rose
745567a2e0
More work on frontend.
2024-05-09 22:22:38 -05:00
Calvin Rose
ef2dfcd7c3
More work on a proof of concept frontend.
...
Basic frontend being prototyped in examples/sysir/frontend.janet. Still
a lot of work needs to be done here, and some of this code will
eventually move to C most likely, but this is a good way to better
exercise our backend.
Type inference - at the very least _forward_ inference, is the most
needed change here. While one could do this in the compiler
frontend, doing so in sysir/asm is not so much of an issue. "Inference"
here means inserting "bind" instructions when there is only a single
type that will work correctly.
2024-05-05 14:45:00 -05:00
Calvin Rose
3a782d27b1
Allow for multiple functions in a sysir "context".
...
Allows for in memory linking.
2023-10-22 16:05:38 -05:00
Calvin Rose
6a78b6d1c6
Merge remote-tracking branch 'origin/compile-opt' into compile-opt
2023-10-10 20:28:09 -05:00
Calvin Rose
549ee95f3d
Add os/posix-exec (along os/posix-fork)
...
Useful for old-style unix daemons, start up scripts, and so on.
Easy to add on top of os/execute.
May want to consider allowing the same IO redirection as os/execute
and os/spawn.
May also want to put both fork and exec behind a config switch since I
suppose some systems may not support them, although I don't know of any
concrete examples.
2023-10-08 21:03:08 -05:00
Calvin Rose
84ad161f1e
Add support for weak references in arrays.
...
Also change weak table syntax to not require keyword arguments.
2023-09-30 10:56:43 -05:00
Calvin Rose
b3a6e25ce0
Add weak references in the form of weak tables.
...
Any references exclusively held by a weak table may be collected
without the programmer needing to free references manually. A table
can be setup to have weak keys, weak values, or both.
2023-09-27 23:36:09 -05:00
Calvin Rose
efbc46c69e
Add support for using operators on arrays (and pointers to arrays).
...
Allows more expressive yet type checked representation of array
algorithms.
2023-09-03 12:32:28 -05:00
Calvin Rose
9b9f67c371
Merge branch 'master' into compile-opt
2023-09-03 10:18:54 -05:00
Calvin Rose
21eab7e9cc
Update sigaction to help address #1262 .
...
Update example to have 4 cases - case 3 was previously broken but should
now work.
2023-08-23 09:16:59 -05:00
Calvin Rose
d9605c2856
Allow iterating over generators with pairs, keys, and values.
2023-08-22 19:25:05 -05:00
Calvin Rose
5f5e5cf693
Merge branch 'master' into compile-opt
2023-08-20 13:08:56 -05:00
Calvin Rose
f45571033c
Add os/sigaction for signal handling.
...
Also improve interrupts to work better with busy loops
and signals.
2023-08-19 13:26:29 -05:00
Calvin Rose
b939671b79
Add check for redefining types.
2023-08-13 11:09:20 -05:00
Calvin Rose
4b8e7a416f
Have separate instructions for pointer arith
2023-08-12 17:36:06 -05:00
Calvin Rose
a2bd98390e
More work on the sysir.
2023-08-12 13:42:52 -05:00
Calvin Rose
d9912f38f8
Add union types and change name of type constructor instructions.
2023-08-12 10:29:24 -05:00
Calvin Rose
8007806c8e
Add better support for arrays and struct fields in IR.
...
Also add option for named registers.
2023-08-08 18:56:02 -05:00
Calvin Rose
3fe4cfd14c
Add labels back to sysir
2023-08-07 09:39:35 -05:00
Calvin Rose
75be5fd4c6
Update sysir to have better field support.
2023-08-06 20:00:49 -05:00
Calvin Rose
7c7136fd70
Merge branch 'master' into compile-opt
2023-08-06 17:09:13 -05:00
Calvin Rose
cfa32d58a7
More work on sysir, add initial work for recursive types.
2023-08-06 15:50:21 -05:00
Calvin Rose
4d7baef89e
Merge branch 'master' into compile-opt
2023-07-04 13:52:54 -05:00
Calvin Rose
9a2897e741
Run through astyle with manual corrections
2023-06-08 13:01:49 -05:00
Calvin Rose
ef94a0f0b4
Rename sysdialect to sysir
2023-05-12 18:11:14 -05:00
Calvin Rose
90f212df92
Add length method ffi/jitfn abstract values.
2022-12-04 11:08:17 -06:00
Calvin Rose
aa60c1f36a
Add ffi jit example.
2022-12-03 17:52:23 -06:00
bakpakin
43c47ac44c
Address #1037 - move stack hack after arg writing logic to avoid
...
clobber.
2022-09-20 15:37:20 -05:00
Calvin Rose
1cebe64664
Add some soft test cases for #1037 .
2022-09-20 10:01:12 -05:00
Calvin Rose
3479841c77
Address #1034 - add handling for 8-16 byte structs in FFI.
2022-09-20 09:28:46 -05:00
Calvin Rose
6a899968a9
Allow passing user signals to (signal) as keywords.
2022-09-17 21:18:07 -05:00
bakpakin
c7bc711f63
Add windows FFI example test case for void functions with double
...
argument.
2022-09-15 13:58:54 -05:00
Calvin Rose
1f7f20788c
Add line loop example for awk or sed like processing.
2022-08-26 12:29:23 -05:00
Calvin Rose
c59dd29190
Add stress test for marshalling to examples.
2022-08-26 12:27:53 -05:00
Calvin Rose
f5d11dc656
Address #1014 improve parse errors when bad delimiters are found.
...
Reuse some existing logic for eof errors.
2022-08-24 11:34:59 -05:00
bakpakin
c043b1d949
Add win32 ffi example.
2022-08-14 15:40:09 -05:00
bakpakin
9a6d2a7b32
Fix FFI for reference return values and stack parameter passing.
2022-08-14 15:20:30 -05:00
bakpakin
f8a9efa8e4
Allow binding pre-loaded symbols in windows FFI.
...
Mimic the posix RTLD_NOW setting for dlopen by iterating
opened DLLs to look for symbols.
2022-08-14 13:26:13 -05:00
Calvin Rose
47e91bfd89
Fix docstring.
2022-06-19 18:52:37 -05:00
Calvin Rose
a6f93efd39
Support for array types in ffi.
2022-06-19 08:03:32 -05:00
Calvin Rose
a1aab4008f
Update FFI example.
2022-06-18 10:06:39 -05:00
Calvin Rose
40e9430278
Move examples to example directory.
2022-06-17 17:24:52 -05:00
Calvin Rose
c9f33bbde0
Add rwlocks.
2022-06-05 16:42:18 -05:00
Calvin Rose
e1602618c3
Merge pull request #894 from pepe/fix-numarray-example
...
Improve numarray example
2021-12-09 14:09:11 -06:00