Commit Graph

3461 Commits

Author SHA1 Message Date
Calvin Rose 299998055d Update meson min build to turn off ffi. 2022-06-12 10:15:36 -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 6d970725e7 Update boot.janet for typos. 2022-06-11 21:19:42 -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 c75b088ff8 Format boot.janet with janet-format. 2022-06-10 19:13:23 -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 33bb08d53b Merge branch 'master' into ffi 2022-06-10 16:24:55 -05:00
Calvin Rose 6d188f6e44 Improve .ppasm function. 2022-06-10 16:24:40 -05:00
Calvin Rose c3648331f1 Expose an easy to use `debugger` function. 2022-06-10 15:39:29 -05:00
Calvin Rose a5b66029d3 Expose the built-in debugger in more places. 2022-06-10 15:23:15 -05:00
Calvin Rose 49bfe80191 Make sure void return types work as expected. 2022-06-10 12:33:01 -05:00
Calvin Rose a5def77bfe Add support for struct return values. 2022-06-10 12:25:08 -05:00
Calvin Rose 9ecb5b4791 Add native-read function as inverse to native-write. 2022-06-10 09:38:52 -05:00
Calvin Rose 1cc48a370a Add native-write, which will write structs to buffers.
Useful for testing as well as useful in its own right. Begs
for an inverse, native-read which would convert byte data
to native structs.
2022-06-10 08:46:20 -05:00
Calvin Rose f1ec8d1e11 Beginning of struct support.
TODO:
- struct return values
- support for unions in signatures
- more testing
- complex types
- packed structs
- writing structs to buffers (useful and we have most of the machinery).
2022-06-09 20:27:56 -05:00
Calvin Rose 55c34cd84f
Merge pull request #985 from masukomi/readme_update
added make install & install-jpm-git to Readme
2022-06-09 10:02:58 -05:00
masukomi aca52d1e36
added make install & install-jpm-git to readme 2022-06-08 21:58:55 -04:00
Calvin Rose 6f90df26a5 Alloca included by default on some OS, but not all.
Do explcitly include alloca on non-msvc compilers.
2022-06-08 10:01:19 -05:00
Calvin Rose 9d9cb378ff Don't include alloca.h, not in MSVC. 2022-06-08 09:59:13 -05:00
Calvin Rose f92aac14aa Only enable FFI on x86-64, non-windows OSes. 2022-06-08 09:50:31 -05:00
Calvin Rose 3f27d78ab5 Add some FFI testing and more improvements to sysv abi.
Add support for integer return and floating point return variants, as
well as arguments on the stack. Start flushing out struct arguments.

Still needed:
- structs (packed and unpacked)
- complex numbers
- long doubles
- MASM alternative for windows (you can technically use sysv abi on
  windows)
- more calling conventions.
2022-06-08 09:44:49 -05:00
Calvin Rose 282d1ba22f Implement sys v abi on x64 partially. 2022-06-06 18:54:17 -05:00
Calvin Rose 94c19575b1 Fix when clib is not pointer type. 2022-06-06 13:37:07 -05:00
Calvin Rose e3e485285b Prevent double usage of native objects after closing. 2022-06-06 13:36:03 -05:00
Calvin Rose 986e36720e Update windows builds for raw-natives. 2022-06-06 13:08:12 -05:00
Calvin Rose 74348ab6c2 Fix symbol lookup when symbol isn't found. 2022-06-06 10:53:00 -05:00
Calvin Rose 8d1ad99f42 Add stubs that are precursor to FFI.
FFI may be best implemented as an external library
(libffi has incompatible license to Janet) or as code
that takes void * and wraps then into Janet C functions
given a function signature. Either way, we need to some way
to load symbols from arbitrary dynamic libraries.
2022-06-06 10:49:30 -05:00
Calvin Rose e69bbff195 Update CHANGELOG.md 2022-06-05 17:40:50 -05:00
Calvin Rose c9f33bbde0 Add rwlocks. 2022-06-05 16:42:18 -05:00
Calvin Rose 9c9f9d4fa6 Add some thread coordination primitives.
Due to the nature of event loops, it is a bit difficult to integrate
lock and other primitives such that they don't block fibers on the same
thread.
2022-06-05 15:24:34 -05:00
Calvin Rose 2f64a6b0cb Add `parse-all` function as a natural extension to the `parse` function. 2022-05-28 19:02:17 -05:00
Calvin Rose dfa78ad3c6 typo 2022-05-28 12:23:28 -05:00
Calvin Rose 677ae46f0c Fix README links for sourcehut. 2022-05-28 12:22:28 -05:00
Calvin Rose 6ada2a458f Fixes on bsd for os/cpu-count. 2022-05-28 12:21:44 -05:00
Calvin Rose 8145f3b68d On linux, available CPUs is more useful information. 2022-05-28 12:19:25 -05:00
Calvin Rose 48289acee6 Add os/cpu-count functionality. 2022-05-28 12:01:23 -05:00
Calvin Rose e5a989c6f9 Remove multiple outputs with same name for old meson versions. 2022-05-27 21:14:47 -05:00
Calvin Rose 4c56704935
Merge pull request #979 from turrisxyz/Pinned-Dependencies-GitHub
chore: Set permissions for GitHub actions
2022-05-27 17:03:54 -05:00
naveen 9cda44f443 chore: Set permissions for GitHub actions
Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
2022-05-27 00:32:28 +00:00
Calvin Rose 431451bac2 Make install work ok if meson is old. 2022-05-25 22:35:20 -05:00
Calvin Rose 395ca7feea Fix meson.build for older versions of meson. 2022-05-14 10:27:28 -05:00
bakpakin 5b2a402930 Fix version bump. 2022-05-09 10:28:09 -05:00
bakpakin 85129a1873 Prepare for 1.22.0 release. 2022-05-09 10:19:40 -05:00
Calvin Rose 487d333024 Add `module/value` function to make grabbing bindings out module tables. 2022-05-05 19:24:44 -05:00