# Changelog All notable changes to the library should be put here ## 0.7.0 - **BREAKING:** Refactor: Rename `JanetArgs::get_unwraped` to `JanetArgs::get_unwrapped` - **BREAKING:** Refactor: Rename `FileFlags::is_serializeble` to `FileFlags::is_serializable` - Feat: Add `JanetAbstract::take` method - Feat: Add `JanetAbstract::into_inner` method - Feat: Add `JanetTuple::{sourcemap, set_sourcemap}` methods - Refactor: Simplify `JanetAbstract::new` - Fix: Fix undefined behavior in `JanetArray::as_{ref,mut}` methods - Fix: Fix clippy lints - docs: Update a few documentation comments ## 0.6.0 - **BREAKING:** Feat: Conditionally expose `JanetFile` "piped" flag (PIPED was removed in Janet 1.22.0) - **BREAKING:** Refactor: Changed definition of `IsJanetAbstract` trait - **BREAKING:** Refactor: Changed the return type of `JanetAbstract::get{_mut, _unchecked, _unchecked_mut}` - **BREAKING:** Feat: Move everything possible to `C-unwind` - **BREAKING:** Up Minimum Rust version to 1.71.0 - Feat: Add additional implementation of `From` implementation for `JanetBuffer`, `JanetArray` and `JanetTable` - Feat: Expose `JanetBuffer` methods that use `CStr` on no_std environment - Feat: Expose `JanetFile` "update" flag - Feat: Expose more of the String-like types API on no_std environment - Feat: Add method `can_resume` for `JanetFiber` - Refactor: Simplify the `tuple!` and `structs!` macros - Refactor: Simplify a few `PartialEq` implementations - Refactor: Simplify `JanetStruct` implementation of `Clone` - Refactor: Adapt lifetimes to changes on bstr crate - Refactor: Modernize format strings - Fix: Fix compilation when `unicode` feature os off - Fix: Fix `check_mut_ref` on `janet_fn` attribute macro - Fix: Fix linking on non x86_64 targets - Docs: Improve documentation flags - Docs: Simplify links - CI: Many CI improvements ## 0.5.0 - **BREAKING:** Rename `JanetClient::with_default_env` -> `JanetClient::load_env_default` - **BREAKING:** Rename `JanetClient::with_replacements` -> `JanetClient::load_env_replacements` - Add `catch` arg to `janet_fn` attribute macro that adds code to catch Rust panics and transform them into Janet panics - Add two new functions to initialize `JanetClient`: `JanetClient::init_with_replacements` and `JanetClient::init_with_default_env` - Add `JanetFile::temp` - Fix `tuple::{IntoIter, Iter}::size_hint` implementation - Migrate to Rust 2021 ## 0.4.1 - Add the trait `JanetArgs` that extend functionality of `[Janet]` used in Rust defined Janet functions - Add the trait `JanetTypeName` that defines the name of the types displayed janet messages - Add `bad_slot!` macro to shorten and help developing Rust defined Janet functions ## 0.4.0 - **BREAKING:** Make `JanetGc::collect` an unsafe function - **BREAKING:** Remove `JanetEnvironment::add_def_with_doc`, `JanetEnvironment::add_var_with_doc`, `JanetEnvironment::add_c_func_with_doc` and `JanetClient` functions with the same names - **BREAKING:** Remove `util::def`, `util::var`, `util::c_func` - **BREAKING:** Rename `JanetEnviornment::add_c_func` to `JanetEnvironment::add_c_fn` `JanetEnvironment::add_c_fn` - Add `JanetFile` type - Add `JanetRng` type - Add `JanetTable::try_insert` and related error type - Add `DefOptions`, `VarOptions`, `CFunOptions` to interact with the Janet environment - Add `declare_janet_mod` macro to generate the machinery that Janet requires do create a Janet native module - It satisfies the same purpose as `janet_mod`, but it can get the documentation string from the function doc-comments and, for Janet versions above 1.17.0, it also add source map information for Janet - Add `janet_abstract::register` function to register an abstract type. - Add option to `janet_fn` attribute macro to include arity checks - Add `Janet::unwrap_or`, `Janet::unwrap_or_else` and `Janet::unwrap_or_default` - Implement `Display` for `TaggedJanet` and defer the `Janet` display implementation to that - Improve error report of attribute macros - Refactor the `janet_fn` attribute macro parameter parsing - Refactor the `JanetEnvironment` and `JanetClient` API - `janet_fn` now emits code with the function documentation and source map information as constants to be used by another macro `declare_janet_mod` - Fix compilation when no_std and with unicode feature enabled ## 0.3.2 - Add `JanetTable::clear` in Janet version below 1.10.1 ## 0.3.1 ### Fixes - Fix compiler complaining about alloc crate when `std` feature is active while using a macro ## 0.3.0 ### Changes - **BREAKING:** Rename `as_ptr_mut` to `as_mut_ptr` - **BREAKING:** Rename `as_raw_mut` to `as_mut_raw` - **BREAKING:** `JanetAbstract::new` now takes a value - **BREAKING:** Make the `janetrs::types` module private and export everything inside it in the upper module - **BREAKING:** Modify `From<&str>` for `Janet` to return a Janet keyword if `&str` starts with `:` - **BREAKING:** Modify `CallError::stacktrace` function. - Add ability to change some Janet behavior using the `amalgation` feature using environment variables - Add `DeepEq` trait - Add `dedup`, `dedup_by` and `dedup_by_key` for `JanetArray` - Add `get_unchecked` and `get_unchecked_mut` for `JanetArray` - Add `get_unchecked` for `JanetTuple` - Add `get_method` and `has_method` to `Janet` - Add `prototype`, `set_prototype` and `with_prototype` methods for `JanetTable` - Add `get_key_value_proto{_mut}` and `get_proto{_mut}` methods for `JanetTable` - Add `JanetGc` and `JanetGcLockGuard` types to access some Janet GC operations - Add `JanetGcRootGuard` and the functions `JanetGc::root` and `JanetGc::unroot` to root a Janet object to the GC - Add functions to get reference to a `JanetAbstract` data safely - Add `JanetAbstract::is` - Add `Janet::int64` - Add `Janet::uint64` - Create `janetrs_version` crate to use as common code used by `janet_version` macro and `janetrs::util` module - Implement `DeepEq` for most types - Implement `Debug` and `Display` for `JanetSymbol` - Implement `Debug` and `Display` for `JanetKeyword` - Implement `IsJanetAbstract` for i64 and u64 - Implement `PartialEq`, `Eq`, `PartialOrd` and `Ord` for `JanetAbstract` - Implement `PartialEq`, `Eq`, `PartialOrd` and `Ord` for `JanetFunction` - Implement `PartialOrd` and `Ord` for `JanetFiber` - Implement `From` and `TryFrom` between `i64` and `Janet` - Implement `From` and `TryFrom` between `u64` and `Janet` - Include "@" before the debug representation of Janet mutable types - Refactor `Debug` implementation of `Janet` type - Refactor `Display` implementation of `Janet` type - Refactor some implementations of `From` and `TryFrom` related to `Janet` type - Reduce code duplication in `JanetAbstract` functions ### Fixes - **BREAKING:** Change definition of `IsJanetAbstract` trait - Expose `jcatch!` macro only if Janet version supports the underlying mechanism - Fix some clippy lints - Fix compilation on no_std environment. - Make some functions const if using a recent enough Rust version ## 0.2.0 ### Changes - **BREAKING:** Add `Janet::unwrap` that return `TaggedJanet` - **BREAKING:** Rename `Janet::unwrap` to `Janet::try_unwrap` - Add `JanetEnvironment` type - Add `janet_version`/`cjvg` attribute macros for conditional compilation of Janet versions - Add split iterator for `JanetBuffer` and `JanetString` - Add `jcatch` declarative macro - Refactor `JanetClient` in terms of `JanetEnvironment` - Implement `TaggetJanet` type - Implement `JanetAbstract` type - Implement `JanetPointer` type - Implement `JanetTryState` for Janet "exception" recovery - Implement `PartialEq`, `Eq`, `PartialOrd` and `Ord` for several Janet types - `janet_fn` now can accept a parameter `check_mut_ref` that checks if the function received more than one `*mut` pointer as parameter (not the default because Janet types are like interior mutability types) - More methods added for several types and improvements to the docs ### Bug Fixes - Fix change in behavior in `JanetBuffer` since Janet 1.13.0 and also enforce that on earlier versions - Fix UB in `JanetTryState` safe API - Fix `Default` implementation for `JanetEnvironment` - Fix `JanetTuple` implementation of `PartialEq` to match the Janet implementation ## 0.1.2 ### Changes - Implement Display for `JanetType` ### Bug Fixes - Fix `From` for `JanetString` not considering that char can be represented with more than 1 byte in UTF-8 ## 0.1.0 ~ 0.1.1 ### Changes - Basic Janet types manipulation - A way to run the Janet runtime - Macros to create Janet collections - Macro to cause Janet Panics - Macro to catch Rust Panic and transform to Janet Panic