Calvin Rose
aa5c987a94
Change semantics of bracketed tuple equality.
...
Comparison between different bracket and normal tuples
will now take into account the delimiter type. This solves strange
non-locality issues in the compiler due to this false equality, and is
more consistent with Janet's otherwise strong equality philosophy.
2023-03-03 18:24:02 -06:00
Calvin Rose
746ff5307d
Update for more minimal builds.
2023-02-12 12:14:11 -06:00
Calvin Rose
ef85b24d8f
Add optional offset to ffi/write.
2023-02-12 12:08:28 -06:00
Calvin Rose
c55d93512b
Add buffer/push-at for easier manipulation of buffers
...
buffer/blit is difficult to use, and while buffer/push is the easiet
buffer manipulation function to use it only appends to the buffer.
buffer/push-at lets users manipulate buffers at any index - useful
for buffers used as an in-memory databases, for example.
2023-02-12 11:26:00 -06:00
Calvin Rose
2e38f9ba61
Allow passing pointer-buffers to other threads.
2023-02-12 11:07:45 -06:00
Calvin Rose
1cadff8e58
Add ffi/pointer-buffer for easier memory manipulation in FFI.
...
Added underlying buffer support for buffer instances that cannot
reallocated underlying memory - useful for (small) memory mapped
files and other FFI utilties.
2023-02-12 09:20:05 -06:00
Calvin Rose
b032d94877
Add sandboxing API.
...
The sandboxing API is meant to make janet a bit more attractive
for certain application embedding use cases. The sandboxing API
puts limits on what system resources the interpreter can access.
2023-02-06 09:05:57 -06:00
bakpakin
a490937cd9
Add :mingw value when getting the OS setting when compiled with mingw.
2023-01-21 11:50:03 -06:00
bakpakin
93b469885a
Initial Mingw support with Makefile.
...
Also add a macro JANET_MSVC to distinguish between
a windows build (JANET_WINDOWS) and a build with msvc.
2023-01-21 10:37:34 -06:00
Calvin Rose
a0f40042cb
Update copyright year.
2023-01-07 15:03:35 -06:00
Calvin Rose
d5ee6cf521
Add malloc and free to ffi.
...
Very "unsafe", but a good tool of last resort. In most cases
a buffer is preferable, but the lifetime can be a bit unclear.
This allows very granular control over memory.
2022-12-15 21:35:44 -06: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
Calvin Rose
c731f01067
Address windows compilation warning.
2022-12-03 12:10:22 -06:00
Calvin Rose
6c9c1cdb30
MAP_ANON(YMOUS) not strictly needed.
2022-12-03 11:45:33 -06:00
Calvin Rose
9ba2b40e87
Add MAP_ANON instead of MAP_ANONYMOUS for mac
2022-12-03 11:31:04 -06:00
Calvin Rose
7a3d055012
Add ffi/jitfn for JIT compilation.
...
Convert a byte sequence of machine code to an
an executable pointer that can be used with ffi/call.
2022-12-03 11:26:23 -06:00
Calvin Rose
e43eab5fd6
Fix panicf call.
2022-10-30 09:57:40 -05:00
Calvin Rose
725c785882
Formatting.
2022-10-10 14:24:03 -05:00
bakpakin
9dc03adfda
Fix pass by reference in windows FFI to accomodate stack shift.
2022-09-22 10:58:16 -05: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
f33c381043
Improve sysv64 classify algorithm.
2022-09-20 09:45:17 -05:00
Calvin Rose
3479841c77
Address #1034 - add handling for 8-16 byte structs in FFI.
2022-09-20 09:28:46 -05:00
bakpakin
e326071c35
Fix void returns in windows FFI - address #1025
2022-09-15 13:51:11 -05:00
Calvin Rose
1aea5ee007
Remove stack inversion code for sysv64 FFI.
2022-08-16 12:38:44 -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
fb5b056f7b
Address #1001 - don't process names passed to dlopen.
2022-07-19 20:04:17 -05:00
Calvin Rose
e4bafc621a
Remove ssize_t usage.
2022-06-20 11:09:41 -05:00
Calvin Rose
47e91bfd89
Fix docstring.
2022-06-19 18:52:37 -05:00
Calvin Rose
eecc388ebd
Add support for 0-element arrays in FFI.
...
Allows for flexible array member construct mapping.
2022-06-19 16:29:55 -05:00
Calvin Rose
cfaae47cea
Fix trailing :pack-all or :pack in struct.
2022-06-19 13:06:19 -05:00
Calvin Rose
c1a0352592
Fix unset field in JanetFFIType.
2022-06-19 12:58:45 -05:00
Calvin Rose
a6f93efd39
Support for array types in ffi.
2022-06-19 08:03:32 -05:00
Calvin Rose
20511cf608
Cast NULL pointer to nil in return in ffi.
2022-06-18 16:53:01 -05:00
Calvin Rose
1a1dd39367
Use __builtin_alloca if no other option.
2022-06-18 13:54:47 -05:00
Calvin Rose
589981bdcb
BSD systems put alloca in the stdlib
2022-06-18 12:18:06 -05:00
Calvin Rose
89546776b2
alloca
2022-06-18 12:15:16 -05:00
Calvin Rose
e37be627e0
Allow loading current process on windows as well.
2022-06-18 10:31:00 -05:00
Calvin Rose
a1172529bf
Fix named arguments with optional args.
2022-06-18 09:46:28 -05:00
Calvin Rose
c9586d39ed
Add a :none calling convention.
...
The ffi module is useful even when true ffi calls
are not yet implemented. This lets the ffi be enabled
on any architecture, albeit with a degraded feature set
where calling conventions are not implemented.
2022-06-12 10:12:45 -05:00
Calvin Rose
2e9f67f4e4
Change all "native-*" to ffi/. Move new dll loading funcs.
...
native-close, raw-native and native-lookup have become
ffi/close, ffi/native, and ffi/lookup instead.
The new ffi module will be useful for any architecture even if we don't
support making calls to certain functions. We can simple add a
do-nothing calling convetion that panics on call. ffi/read and ffi/write
are useful in their own right.
2022-06-12 10:02:02 -05:00
Calvin Rose
e318170fea
Begin working on windows calling convetion.
...
Also remove inline assembly for making sysv64 calls.
Instead, use crafted function signatures to set all needed registers.
2022-06-12 09:16:10 -05:00
Calvin Rose
73c4289792
Fix define check.
2022-06-11 21:50:34 -05:00
Calvin Rose
ea45d7ee47
Convert to one big blob of assembly for sysv cc.
...
Also begin working on win64 calling convention.
2022-06-11 21:43:35 -05:00
Calvin Rose
458c2c6d88
Make calling convention optional for trampoline
2022-06-11 15:47:51 -05:00
Calvin Rose
0cc53a8964
Get a GTK example working. Good proof of concept.
2022-06-11 14:47:35 -05:00
Calvin Rose
0bc96304a9
Add r32 and r64 aliases for real numbers in ffi types.
2022-06-11 09:40:37 -05:00
Calvin Rose
181f0341f5
Add :pack and :pack-all keywords to allow for struct packing.
...
Syntax may need some work but covers both fully packed structs
as well as packing of individual members.
2022-06-10 18:53:22 -05:00
Calvin Rose
49bfe80191
Make sure void return types work as expected.
2022-06-10 12:33:01 -05:00