summaryrefslogtreecommitdiff
path: root/test_ffi
AgeCommit message (Collapse)Author
2022-11-22chore: workspace inheritance (#16343)Leo Kettmeir
2022-10-21fix(ext/ffi): Use BufferSource for FFI buffer types (#16355)Aapo Alasuutari
Potential fix for type-code mismatch in FFI buffer types. The code supports ArrayBuffers, but types only reflect TypedArray support. There's also an existing type for this sort of stuff: `BufferSource`. (Although, it uses `ArrayBufferView` which doesn't actually connect with the TypedArray interfaces specifically, but it's just a type inheritance difference and nothing more.)
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-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-09-01fix(ext/ffi): Fix pointer types (#15730)Aapo Alasuutari
2022-08-23BREAKING(ext/ffi): specialized `buffer` type (#15518)Divy Srivastava
2022-08-11perf(ops): Monomorphic sync op calls (#15337)Aapo Alasuutari
Welcome to better optimised op calls! Currently opSync is called with parameters of every type and count. This most definitely makes the call megamorphic. Additionally, it seems that spread params leads to V8 not being able to optimise the calls quite as well (apparently Fast Calls cannot be used with spread params). Monomorphising op calls should lead to some improved performance. Now that unwrapping of sync ops results is done on Rust side, this is pretty simple: ``` opSync("op_foo", param1, param2); // -> turns to ops.op_foo(param1, param2); ``` This means sync op calls are now just directly calling the native binding function. When V8 Fast API Calls are enabled, this will enable those to be called on the optimised path. Monomorphising async ops likely requires using callbacks and is left as an exercise to the reader.
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-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-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-09fix(ext/ffi): Avoid keeping JsRuntimeState RefCell borrowed for event loop ↵Aapo Alasuutari
middleware calls (#15116)
2022-07-08perf(ext/ffi): leverage V8 Fast Calls (#15125)Divy Srivastava
2022-06-29fix(ext/ffi): Empty buffers error with index out of bounds on FFI (#14997)Aapo Alasuutari
2022-06-28feat(ext/ffi): Thread safe callbacks (#14942)Aapo Alasuutari
2022-06-27fix(dts/ffi): non-exact types break FFI inference (#14968)Carter Snook
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-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-20BREAKING(ext/ffi): Remove `Deno.UnsafePointer` indirection (#14915)Divy Srivastava
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-02-18feat(ext/ffi): Support read only global statics (#13662)Aapo Alasuutari
2022-01-20chore: update copyright year (#13434)Yoshiya Hinosawa
2022-01-12feat(ext/ffi): UnsafeFnPointer API (#13340)DjDeveloper
2022-01-11fix(ext/ffi): `pointer` type can accept `null` (#13335)DjDeveloper
2022-01-11feat(ext/ffi): support alias names for symbol definitions (#13090)DjDeveloper
2022-01-10feat(ext/ffi): infer symbol types (#13221)Divy Srivastava
Co-authored-by: sinclairzx81 <sinclairzx81@users.noreply.github.com>
2022-01-07chore: update copyright to 2022 (#13306)Ryan Dahl
Co-authored-by: Erfan Safari <erfanshield@outlook.com>
2022-01-05fix(ext/ffi): throw errors instead of panic (#13283)DjDeveloper
2021-12-15feat(ext/ffi): implement UnsafePointer and UnsafePointerView (#12828)Elias Sjögreen
2021-11-10test(ffi): add mutable buffer tests (#12701)Carter Snook
2021-11-02chore: update to Rust edition 2021 (#12578)Bartek Iwańczuk
2021-10-10test(ext/ffi): add test for multiple buffers (#12373)Bartek Iwańczuk
2021-10-07fix(ext/ffi): don't panic in dlopen (#12344)Divy Srivastava
2021-10-06feat(ext/ffi): add support for buffer arguments (#12335)Bartek Iwańczuk
This commit adds support for passing buffer arguments across FFI boundary. Co-authored-by: eliassjogreen <eliassjogreen1@gmail.com> Co-authored-by: Bert Belder <bertbelder@gmail.com>
2021-10-05feat(ext/ffi): Non-blocking FFI (#12274)Divy Srivastava
2021-09-20test(ext/ffi): add tests for different parameter and return types (#12158)Elias Sjögreen
2021-08-06feat: ffi to replace plugins (#11152)Elias Sjögreen
This commit removes implementation of "native plugins" and replaces it with FFI API. Effectively "Deno.openPlugin" API was replaced with "Deno.dlopen" API.