ChangeLog
=========

# ?

- cargo: Move workspace to the parent workspace.
- Fix perl tests.

# 3.12.0

- \*: Sync with changes in Syd-3.51.0.

# 3.11.0

- \*: Add support for `notify` category new in Syd-3.50.0.
- \*: Add support for the new
  [`lock`](https://man.exherbo.org/syd.2.html#lock) modes `read` (new in
  Syd-3.39.0), and `drop` (new in Syd-3.50.0).

# 3.10.0

- \*: Add support for `fs` category new in Syd-3.47.0.

# 3.9.0

- Update for `/dev/syd` _stat_(2) buffer changes in Syd-3.46.0.

# 3.8.0

- \*: Add support for `walk` category new in Syd-3.39.0.

# 3.7.0

- Update device creation categories to include the new `mkbdev`, and
  `mkcdev` in Syd-3.38.0.

# 3.6.1

- \*: Add support for `rmdir` category new in Syd-3.33.0.

# 3.6.0

- ruby: Fix internal type passed to `Syd.pid_max` from `uint` to
  `size_t`. **This fixes an undefined behaviour**.
- c: drop the `itoa` crate dependency and rely on rust stdlib for
  integer to string conversion. This may be improved on in the future.
- c: Change type `enum lock_state_t` from a C enum to an `uint8_t` and
  validate out of bounds values correctly. This is **a breaking change
  which fixes an undefined behaviour**.
- c: Change type `enum action_t` from a C enum to an `uint8_t` and
  validate out of bounds values correctly. This is **a breaking change
  which fixes an undefined behaviour**.
- \*: Add abort action new in Syd-3.32.5.
- \*: Sync with Chroot sandboxing changes in Syd-3.23.4.

# 3.5.0

- \*: Sync with API changes in Syd-3.31.0.
- perl: Fix 32-bit issues by ensuring correct input types.

# 3.4.0

- Change project license from `LGPL-3.0-or-later` to `LGPL-3.0`.
- \*: Sync with API changes in Syd-3.28.0.

# 3.3.3

- python: Fix FFI argument data types for various functions.
- python,ruby: Fix FFI argument data types for SegvGuard functions.

# 3.3.2

- \*: Remove `segvguard/filter` related functions.

# 3.3.0

- *: Sync with API changes in Syd-3.23.0.
- perl: do not allow invalid actions in `syd_force_{add,def}`.
- perl: do not allow invalid states in `syd_lock`.
- ruby: Fix `Syd.{lock,force_{add,def}}` incorrectly allowing invalid
  states/actions as valid.
- Drop `exec/kill` functions which were removed in Syd-3.21.0.

# 3.2.0

- Update for Force sandboxing changes in 3.16.8.
- emacs: Add API functions for the new SegvGuard in Syd-3.16.3.
- go: Add API functions for the new SegvGuard in Syd-3.16.3.
- ruby: Add API functions for the new SegvGuard in Syd-3.16.3.
- python: Add API functions for the new SegvGuard in Syd-3.16.3.
- perl: Add API functions for the new SegvGuard in Syd-3.16.3.
- Add API functions for the new SegvGuard in Syd-3.16.3.

# 3.1.5

- go: Add API functions for the new force sandboxing in Syd-3.15.0.
- emacs: Add API functions for the new force sandboxing in Syd-3.15.0.
- ruby: Add API functions for the new force sandboxing in Syd-3.15.0.
- python: Add API functions for the new force sandboxing in Syd-3.15.0.
- perl: Add API functions for the new force sandboxing in Syd-3.15.0.
- Add API functions for the new force sandboxing in Syd-3.15.0.

# 3.1.4

- Fix tests to work with Syd-3.14.1 whose MDWE protections break rbsyd.

# 3.1.3

- Improve documentation

# 3.1.2

- Fix tests broken by parse-size switching from decimal to binary in
  Syd-3.11.2

# 3.1.1

- Fix tests broken by the environment hardening in Syd-3.11.1

# 3.1.0

- Sync API changes in Syd-3.10.0

# 3.0.7

- go: Add new function `KillMem`.
- lisp: Add new function `syd-kill-mem`.
- perl: Add new function `kill_mem`.
- python: Add new function `kill_mem`.
- ruby: Add new function: `kill_mem`.
- Implement new function `syd_kill_mem`.

# 3.0.6

- go: Add new function `KillPid`.
- lisp: Add new function `syd-kill-pid`.
- perl: Add new function `kill_pid`.
- python: Add new function `kill_pid`.
- ruby: Add new function: `kill_pid`.
- Implement new function `syd_kill_pid`.
- Set MSRV to 1.56.1 as determined by `cargo-msrv`.
- Correct git repository in `Cargo.toml`.

# 3.0.5

- ruby: Add missing functions `Syd.deny_read_del` and `Syd.deny_read_rem`.
- lisp: fix various warnings during byte-compiling with recent Emacs.
- ruby: Add example demonstrating usage.

# 3.0.4

- ruby: Initial Ruby bindings using `ffi` gem.
- lisp: Add new function `syd-info`.
- lisp: Add new function `syd-filter-mem` and `syd-filter-pid`.
- go: Add new functions `FilterMem` and `FilterPid`.
- perl: Add new functions `filter_mem` and `filter_pid`.
- python: Add new functions `filter_mem` and `filter_pid`.
- Implement new functions `syd_filter_mem` and `syd_filter_pid`.

# 3.0.3

- Add `syd.el`, syd interface for Emacs Lisp
- use **itoa** crate to make `syd_pid_max` function simpler and more
  efficient.
- add examples demonstrating library usage

# 3.0.2

- Fix tests on musl systems
- Drop dependency on the **nix** crate
- Add additional safety checks that `/dev/syd` is the correct file
- Fix a segfault that happens on musl systems

# 3.0.1

- go: initial libsyd Go bindings

# 3.0.0

- Define `LockState` enum and `LOCK_OFF`, `LOCK_EXEC` and `LOCK_ON`
  constants. These were already defined for perl, and python so this
  makes the C library compatible.
- use **itoa** crate to make `syd_load` function simpler and more
  efficient.
- python: Implement the new function **load**.
- perl: Implement the new function **load**.
- Implement the new function **syd\_load**.
- python: Implement new functions **panic** and **reset**.
- perl: Implement new functions **panic** and **reset**.
- Implement new functions **syd\_panic()** and **syd\_reset()**.
- perl: fix argument handling of the `exec` function
- perl: new constant `$syd::LIBSYD_PATH` points to the path of libsyd.so.
- Start using `nix` to call `lstat` rather than Rust std.
- Define `__all__` for `pysyd` such that `from syd import *` becomes
  practical.

# 3.0.0-alpha.6

- Initial Perl bindings

# 3.0.0-alpha.5

- Fix tests

# 3.0.0-alpha.4

- Drop cbindgen dependency, include `syd.h`

# 3.0.0-alpha.3

- Add build instructions to the readme

# 3.0.0-alpha.2

- Fix a problem with Doxygen API documentation generation

# 3.0.0-alpha.1

- Initial implementation of libsyd & syd.py
