summaryrefslogtreecommitdiff
path: root/ext/ffi/lib.rs
AgeCommit message (Collapse)Author
2022-10-20chore: upgrade rusty_v8 to 0.54.0 (#16368)Bartek Iwańczuk
<!-- Before submitting a PR, please read http://deno.land/manual/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. -->
2022-10-20feat(ext/ffi): Make op_ffi_ptr_of fast (#16297)Aapo Alasuutari
Makes `op_ffi_ptr_of` fast. One of the tests changed from printing `false` to `true` as the fast `&[u8]` slice path creates the slice with a null pointer. Thus the `op_ffi_ptr_of` will now return a null pointer value whereas previously it returned a dangling pointer value.
2022-10-20perf(ext/ffi): Fast UnsafePointerView read functions (#16351)Aapo Alasuutari
This PR makes pointer read methods of `Deno.UnsafePointerView` Fast API compliant, with the exception of `getCString` which cannot be made fast with current V8 Fast API.
2022-10-15fix(ext/ffi): Fix UnsafeCallback ref'ing making Deno enter a live-loop (#16216)Aapo Alasuutari
Fixes #15136 Currently `UnsafeCallback` class' `ref()` and `unref()` methods rely on the `event_loop_middleware` implementation in core. If even a single `UnsafeCallback` is ref'ed, then the FFI event loop middleware will always return `true` to signify that there may still be more work for the event loop to do. The middleware handling in core does not wait a moment to check again, but will instead synchronously directly re-poll the event loop and middlewares for more work. This becomes a live-loop. This PR introduces a `Future` implementation for the `CallbackInfo` struct that acts as the intermediary data storage between an `UnsafeCallback` and the `libffi` C callback. Ref'ing a callback now means calling an async op that binds to the `CallbackInfo` Future and only resolves once the callback is unref'ed. The `libffi` C callback will call the waker of this Future when it fires to make sure that the main thread wakes up to receive the callback.
2022-10-13fix(ext/ffi): Invalid 'function' return type check logic, remove U32x2 as ↵Aapo Alasuutari
unnecessary (#16259) The return type checking for `"function"` type FFI values was incorrect and presumed that functions were still being registered as objects containing a "function" key. While here, I also removed the whole return type checking logic as it was needed for optionally creating BigInts on return when needed, but serde_v8 does this automatically now (I think).
2022-10-07fix(ext/ffi): Fix usize and isize FFI callback parameters missing match arm ↵Aapo Alasuutari
(#16172) Mea culpa. Back when I re-introduced parameter and return value types to FFI callbacks I failed to properly account for the change in match arm logic. As a result, usize and isize parameters in FFI callbacks currently enter the branch meant for void only. This PR changes the match arms to all be explicit, making sure that void is the only arm marked unreachable and that it stays that way.
2022-09-07perf(ops): inline &[u8] arguments and enable fast API (#15731)Divy Srivastava
2022-09-07feat(ext/ffi): Implement FFI fast-call trampoline with Dynasmrt (#15305)Arnau Orriols
2022-09-05feat(ext/ffi): Support bool FFI type (#15754)Aapo Alasuutari
2022-08-23BREAKING(ext/ffi): specialized `buffer` type (#15518)Divy Srivastava
2022-08-21chore: use Rust 1.63.0 (#15464)Mathias Lafeldt
2022-08-10fix(ext/ffi): unstable op_ffi_unsafe_callback_ref (#15439)Luca Casonato
2022-08-05fix(ext/ffi): Check CStr for UTF-8 validity on read (#15318)Aapo Alasuutari
Co-authored-by: Phosra <phosra@tutanota.com>
2022-07-28perf(ext/ffi): use fast api calls for 64bit return types (#15313)Divy Srivastava
2022-07-27perf(ext/ffi): support Uint8Array in fast calls (#15319)Divy Srivastava
2022-07-27chore(ext/ffi): Remove unnecessary byte_offset conditional slicing (#15320)Aapo Alasuutari
2022-07-24chore(ext/ffi): remove dependency on stdint.h (#15294)Divy Srivastava
2022-07-24feat(ext/ffi): Safe number pointers (#15173)Aapo Alasuutari
2022-07-23feat(ext/ffi): Add support to get ArrayBuffers from UnsafePointerView (#15143)Aapo Alasuutari
2022-07-22perf(ext/ffi): Optimise common pointer related APIs (#15144)Aapo Alasuutari
2022-07-19chore: upgrade rusty_v8 to 0.47.0 (#15247)Bartek Iwańczuk
2022-07-15chore: fix Windows specific clippy errors (#15212)David Sherret
2022-07-12fix(ext/ffi): i64 arg to C mapping was wrong (#15162)Aapo Alasuutari
2022-07-12feat(ext/ffi): Support 64 bit parameters in Fast API calls (#15140)Aapo Alasuutari
Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2022-07-12fix(ext/ffi): trampoline for fast calls (#15139)Divy Srivastava
2022-07-09fix(ext/ffi): allow opting out of fast ffi calls (#15131)Divy Srivastava
2022-07-08perf(ext/ffi): leverage V8 Fast Calls (#15125)Divy Srivastava
2022-07-01chore: use Rust 1.62.0 (#15028)Bartek Iwańczuk
2022-06-29fix(ext/ffi): Empty buffers error with index out of bounds on FFI (#14997)Aapo Alasuutari
2022-06-29perf(ext/ffi): optimize synchronous calls (#14945)Divy Srivastava
2022-06-28feat(ext/ffi): Thread safe callbacks (#14942)Aapo Alasuutari
2022-06-26build: require safety comments on unsafe code (#13870)Luca Casonato
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com> Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2022-06-23chore(ext/ffi): Improve FFI static handling (#14924)Aapo Alasuutari
2022-06-21perf(ext/ffi): Optimize FFI Rust side type checks (#14923)Aapo Alasuutari
2022-06-21chore(ext/ffi): simplify FFI types (#14920)Aapo Alasuutari
This commit simplifies the TypeScript types used for interacting with Deno FFI. The basis is that types are now first grouped into logical wholes, NativeNumberType, NativeBigIntType etc. These wholes are combined into the NativeType and NativeResultType general types. Additionally, this PR removes the { function: { parameters: [], result: "void" } } type declaration from parameters (and result types. Now functions are merely passed and returned as "function".
2022-06-20feat(ext/ffi): Callbacks (#14663)Aapo Alasuutari
This commit adds support for unstable FFI callbacks. A callback is registered using the `Deno.UnsafeCallback` API. The backing memory for the callback can be disposed of using `Deno.UnsafeCallback#close`. It is not safe to pass the callback after calling close. Callbacks from other than the isolate thread are not supported. Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com> Co-authored-by: Bert Belder <bertbelder@gmail.com>
2022-06-08feat(ext/ffi): support passing and returning bigints (#14523)Elias Sjögreen
2022-03-25fix(ext/ffi): enforce unstable check on ops (#14115)Luca Casonato
2022-03-16feat(ops): optional OpState (#13954)Aaron O'Mullan
2022-03-14feat(ops): custom arity (#13949)Aaron O'Mullan
Also cleanup & drop ignored wildcard op-args
2022-03-14feat(core): codegen ops (#13861)Divy Srivastava
Co-authored-by: Aaron O'Mullan <aaron.omullan@gmail.com>
2022-02-18feat(ext/ffi): Support read only global statics (#13662)Aapo Alasuutari
2022-01-20fix(ext/ffi): update copyright year to 2022 (#13440)Divy Srivastava
2022-01-15chore: upgrade to rust 1.58 (#13377)David Sherret
2022-01-12feat(ext/ffi): UnsafeFnPointer API (#13340)DjDeveloper
2022-01-11feat(ext/ffi): support alias names for symbol definitions (#13090)DjDeveloper
2022-01-05fix(ext/ffi): throw errors instead of panic (#13283)DjDeveloper
2021-12-17fix(ext/ffi): use `c_char` instead of `i8` for reading strings (#13118)Luke Channings
2021-12-15feat(ext/ffi): implement UnsafePointer and UnsafePointerView (#12828)Elias Sjögreen
2021-11-02chore: update to Rust edition 2021 (#12578)Bartek Iwańczuk