coffi/CHANGELOG.md

165 lines
7.2 KiB
Markdown
Raw Normal View History

2021-09-14 21:29:41 +00:00
# Change Log
All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).
2024-10-03 18:20:31 +00:00
## [1.0.472] - 2024-10-03
2024-10-02 20:22:29 +00:00
### Added
- New `coffi.mem/null` var for implementing custom types
### Performance
- Upcall functions serialized from functions returned by deserializing function pointers now use the backing function pointer directly
- Upcall and downcall classes have been changed to be memoized, meaning ASM is no longer invoked every time a function is serialized, which should drastically improve performance where functions are serialized in a hot loop
### Fixed
- Incorrect docstring on `coffi.mem/address-of` that implied some type of pointer type was returned rather than a long
- Usage of deprecated `(Class/STATIC_FIELD)` access pattern
2024-10-02 19:45:13 +00:00
2024-10-02 18:47:46 +00:00
## [1.0.450] - 2024-10-02
2024-07-24 23:32:30 +00:00
### Added
- Support for JDK 22
- `reinterpret` function which changes the size associated with a segment, optionally associating it with an arena and cleanup action
### Changed
- Arglists and docstrings of functions to refer to arenas rather than the outdated terms scope or session
- Change the arguments to `as-segment` to take longs to account for the removal of an Address type
### Removed
- Deprecated functions referring to sessions and scopes
- Deprecated functions `slice-into` and `with-offset`, replaced by the function `slice`
2024-07-24 23:32:30 +00:00
### Fixed
- Prep step when using coffi as a dependency wouldn't re-run if it failed during execution, e.g. when using the incorrect java version
2023-03-31 15:33:42 +00:00
2023-03-31 15:22:05 +00:00
## [0.6.409] - 2023-03-31
### Added
2022-11-11 20:09:20 +00:00
- Support for JDK 19
- New macros for defining vars with values from native code
- New function to allow getting the backing memory segment of a `coffi.ffi.StaticVariable`, to replace the `Addressable` implementation lost in the migration to JDK 18
2022-07-07 15:02:32 +00:00
2022-10-31 16:36:16 +00:00
### Fixed
2023-03-28 19:26:10 +00:00
- Bug where `static-variable`s with primitive types would not deserialize properly on `deref`
- Uses of `defvar` not compiling
- Bug where nil values would not be correctly coerced to null pointers when passed to inlined functions
- Bug where inline serde functions would fail on complex pointer types
- Bug where padding in structs may be increased when fields have alignments less than their size
2022-10-31 16:36:16 +00:00
- Bug where pointer alignment was incorrectly defined
2022-11-11 20:09:20 +00:00
### Changed
- References to `scope` as a term have been changed to `session` to match Panama messaging. Where this conflicts with function names, old versions have been deprecated and new names have been introduced.
2022-07-07 14:56:25 +00:00
## [0.5.357] - 2022-07-07
2022-04-15 14:56:38 +00:00
### Removed
- `:coffi.mem/long-long` primitive type
- `coffi.mem/slice-into`; the function no longer has an equivalent in panama, but see 2-arity of `coffi.mem/as-segment` for an alternative
2022-04-15 14:56:38 +00:00
2022-04-15 14:58:10 +00:00
### Changed
2022-04-15 14:56:38 +00:00
- `coffi.mem/as-segment` no longer has a close action arity
2022-04-15 14:58:10 +00:00
- JDK version from 17 to 18
2022-01-24 02:28:56 +00:00
2022-01-24 02:18:58 +00:00
## [0.4.341] - 2022-01-23
2022-01-18 20:24:10 +00:00
### Added
2022-01-19 17:01:52 +00:00
- Constants for size and alignment of primitive types
2022-01-18 20:24:10 +00:00
- Support for non-native byte orders of primitive types
- Functions for reading and writing primitive types (e.g. `coffi.mem/read-float`, `coffi.mem/write-long`, etc.)
- Layout objects may now be passed to `coffi.mem/size-of` and `coffi.mem/align-of`
- Constants for native-order primitive layouts
- Constants for byte orders
### Changed
- The `coffi.mem/primitive?` predicate is now actually a function instead of a set
2022-01-10 21:36:42 +00:00
2022-01-10 21:05:46 +00:00
## [0.3.298] - 2022-01-10
2022-01-10 20:54:53 +00:00
### Added
- New `coffi.layout` namespace with support for forcing C layout rules on structs
2021-10-25 14:46:41 +00:00
2022-01-10 20:46:00 +00:00
### Fixed
- C-characters were being read as UTF-16 rather than ASCII code points
2021-10-25 14:46:41 +00:00
2021-10-25 14:44:03 +00:00
## [0.2.277] - 2021-10-25
2021-10-25 14:34:26 +00:00
### Fixed
- Non-primitive arguments on upcalls would generate invalid bytecode with `nil` instructions
## [0.2.259] - 2021-10-16
### Fixed
- Long and double arguments to upcalls failed to compile in some cases
- Void return types on upcalls would crash on serialization
2021-10-14 23:38:10 +00:00
## [0.1.251] - 2021-10-14
2021-10-14 23:25:06 +00:00
### Fixed
- Bug with the inline expansion of `make-serde-wrapper`, make it more maintainable
2021-10-14 18:25:42 +00:00
2021-10-14 18:20:10 +00:00
## [0.1.246] - 2021-10-14
### Fixed
- Incorrect inline expansion of `make-serde-wrapper` in cases where a function has no arguments
2021-10-14 15:23:59 +00:00
## [0.1.241] - 2021-10-14
2021-10-10 17:44:21 +00:00
### Performance
2021-10-13 18:57:32 +00:00
- Added an `:inline` function to `make-serde-wrapper` to remove serialization overhead on primitives
2021-10-10 17:44:21 +00:00
- Added multimethod implementations for primitives in (de)serialization functions, rather than using the default
2021-10-13 18:57:32 +00:00
### Fixed
- `cfn` didn't add serializers with non-primitive types in some cases
2021-10-09 16:26:13 +00:00
## [0.1.220] - 2021-10-09
### Fixed
- All-primitive method types still used serialization when called from `cfn`
2021-10-09 00:26:46 +00:00
- Arrays deserialized to non-vector sequences
- Non-primitive argument types fail to link
2021-10-06 16:42:02 +00:00
2021-10-06 16:40:59 +00:00
## [0.1.205] - 2021-10-06
2021-10-05 00:20:47 +00:00
### Added
- An `address?` predicate
### Fixed
- Compound types caused problems in arglists meta on expansion of `defcfn`
- Compound types were not allowed as return types in `defcfn`
2021-10-01 17:03:39 +00:00
- `nil` was not considered a null pointer
- Primitive-serializing types fail to compile as arguments to downcall handles
- Primitive-serializing types fail to load as arguments to upcall functions
- Void return types on upcalls crash the JVM
- Invalid implementation of serialize-into for primitive types
2021-10-01 01:15:21 +00:00
## [0.1.192] - 2021-09-30
### Added
- An `::ffi/address` key to wrapper functions' metadata
### Fixed
- Usage of a method no longer in Panama that breaks `with-acquired`
## [0.1.184] - 2021-09-30
### Fixed
- Deserializing nullpointers as functions threw an exception
- Upcall stubs with non-primitive arguments failed to compile
- Upcall stubs had incorrect types
2021-09-29 15:55:05 +00:00
## [0.1.176] - 2021-09-29
### Fixed
- Usage of `defcfn` without a docstring produced an invalid `def` form
2021-09-29 15:18:45 +00:00
2021-09-29 15:16:41 +00:00
## [0.1.169] - 2021-09-28
### Added
- Macro for easily wrapping native functions with arbitrary logic
- Functions for creating wrapper fns for native functions
2021-09-29 15:16:41 +00:00
- Macro for easily aliasing types
- Functions to create scopes for deterministic deallocation
- Functions to load libraries by name or path
- Support for serializing and deserializing arbitrary Clojure functions
- Support for serializing and deserializing arbitrary Clojure data structures
2021-09-14 21:29:41 +00:00
2024-10-03 18:20:31 +00:00
[1.0.472]: https://github.com/IGJoshua/coffi/compare/v1.0.450...v1.0.472
2024-10-02 19:43:23 +00:00
[1.0.450]: https://github.com/IGJoshua/coffi/compare/v0.6.409...v1.0.450
2023-03-31 15:30:09 +00:00
[0.6.409]: https://github.com/IGJoshua/coffi/compare/v0.5.357...v0.6.409
2022-07-07 15:02:21 +00:00
[0.5.357]: https://github.com/IGJoshua/coffi/compare/v0.4.341...v0.5.357
2022-01-24 02:18:58 +00:00
[0.4.341]: https://github.com/IGJoshua/coffi/compare/v0.3.298...v0.4.341
2022-01-10 21:05:46 +00:00
[0.3.298]: https://github.com/IGJoshua/coffi/compare/v0.2.277...v0.3.298
2021-10-25 14:44:03 +00:00
[0.2.277]: https://github.com/IGJoshua/coffi/compare/v0.2.259...v0.2.277
2021-10-17 19:53:33 +00:00
[0.2.259]: https://github.com/IGJoshua/coffi/compare/v0.1.251...v0.2.259
[0.1.251]: https://github.com/IGJoshua/coffi/compare/v0.1.246...v0.1.251
2021-10-14 18:20:10 +00:00
[0.1.246]: https://github.com/IGJoshua/coffi/compare/v0.1.241...v0.1.246
2021-10-14 15:23:59 +00:00
[0.1.241]: https://github.com/IGJoshua/coffi/compare/v0.1.220...v0.1.241
2021-10-09 16:26:13 +00:00
[0.1.220]: https://github.com/IGJoshua/coffi/compare/v0.1.205...v0.1.220
2021-10-06 16:38:39 +00:00
[0.1.205]: https://github.com/IGJoshua/coffi/compare/v0.1.192...v0.1.205
[0.1.192]: https://github.com/IGJoshua/coffi/compare/v0.1.184...v0.1.192
[0.1.184]: https://github.com/IGJoshua/coffi/compare/v0.1.176...v0.1.184
2021-09-29 15:58:56 +00:00
[0.1.176]: https://github.com/IGJoshua/coffi/compare/v0.1.169...v0.1.176
2021-09-29 15:16:41 +00:00
[0.1.169]: https://github.com/IGJoshua/coffi/compare/16f56bc31d69142ec4d2fb61b15b069d78b127ca...v0.1.169