safe_bindgen 0.13.2

A library to automatically generate C, Java, and C# files from Rust source files.
Documentation
# [master]

# [0.13.2] 2019-11-03

- Add support for negative constants in C sharp

# [0.13.1] - 2019-09-02

- Fix C parser erroring on enum variants with values

# [0.13.0] - 2019-05-29

- Update clap dependency to the latest version

# [0.12.0] - 2019-04-12

- Switch from a deprecated parsing library `syntex` to `syn`.
- Fix inconsitencies and bugs in the C# module.
- Add more tests for Java & JNI modules.
- Use stable Rust (edition 2018).

# [0.11.0] - 2018-11-15

- Allow to filter symbols in Java bindgen. This can be used for manual reimplementation of
  certain JNI functions in special cases.
- Pass through the compiler feature flags for generated JNI functions (as some functions
  can be feature-gated).
- Fix leaking local references. Because the Android local reference table is limited to 512
  entries it is important to deallocate the local references as soon as possible.

# [0.10.0] - 2018-09-18

- Use `EnvGuard` from `ffi_utils` to detach JNI threads only when needed (i.e. if we
  successfully acquire JNI environment through `GetEnv()`, we do not need to detach the
  native thread)
- Change the class finder function signature (now it returns result wrapped
  as `Result<AutoLocal, JniError>`)

# [0.9.0] - 2018-09-13

- Use custom cached class loader for Java/JNI objects instantiation (this fixes the Android
  freezing issue)

# [0.8.0] - 2018-09-04

- Support new API to pass input source code as a string (`Bindgen::source_code`)

# [0.7.0] - 2018-08-28

- Upgrade unwrap version to 1.2.0
- Use rust 1.28.0 stable / 2018-07-07 nightly
- rustfmt 0.99.2 and clippy-0.0.212

# [0.6.0] - 2018-08-10

- Fix `illegal class name` error in Java/JNI
- Fix `pub(crate)` items being parsed as a part of public API
- Update `syntex_syntax` dependency to 0.59.0
- Add more tests for the C language

# [0.5.2] - 2018-07-03

- Make generated C# delegates readonly

# [0.5.1] - 2018-06-26

- Fix incorrectly generated C# delegates: they were garbage collected because of automatically
  created and recycled references. Instead, we use static references now.
- Change license to dual MIT/BSD.

# [0.5.0] - 2018-06-14

- Support multiple output languages.
- Add Java/JNI generators.
- Add C# generator.
- Fix C headers dependencies resolving (i.e. output header includes in the correct order).

# [0.4.1] - 2017-04-11

## Fixed

- Bump syntex dependency version.

# [0.4.0] - 2017-04-05

## Changed

- Rename to moz-cheddar.
- `enum` values are prefixed with the type name on the C side.
- nullable `Option<fn(..)>` types convert to function pointers.

## Fixed

- Bump dependency versions.
- Make `syntex` an optional feature.
- Documentation cleanup.

# [0.3.3] - 2016-05-03

## Fixed

- arbitrarily nested `const` pointers are handled correctly
- function declarations can now contain patterns
    - such as `fn foo(mut a: ...`
- zero argument functions are now written out as `func(void)`

# [0.3.2] - 2016-03-02

## Changed

- rusty-cheddar now correctly converts types in `std::os::raw`

# [0.3.1] - 2016-01-20

## Changed

- the api can now be placed in any arbitrary module

## Fixed

- the include guard is sanitised to avoid illegal characters in a macro definition


# [0.3.0] - 2016-01-10

## Changed

- the whole fucking thing!
    - no longer requires nightly
    - works as a library which leverages syntex
    - see the README for the new interface

## Added

- the `cheddar` executable which acts as a thin wrapper around the library functionality


# [0.2.0] - 2015-12-28

## Added

- support for function pointers
- support for opaque structs
    - `#[repr(C)] pub struct Foo(Vec<T>);`
    - `typedef struct Foo Foo;`
- the ability to hide your C API behind a module
    - can only be one module deep at this point in time

## Changed

- plugin arguments
    - you must now use key value pairs to specify `file` and `dir`
    - old: `#![plugin(cheddar(path,to,file))]`
    - new: `#![plugin(cheddar(dir = "path/to", file = "file.h"))]`

[master]: https://github.com/Sean1708/rusty-cheddar/compare/v0.3.3...HEAD
[0.3.3]: https://github.com/Sean1708/rusty-cheddar/compare/v0.3.2...v0.3.3
[0.3.2]: https://github.com/Sean1708/rusty-cheddar/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/Sean1708/rusty-cheddar/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/Sean1708/rusty-cheddar/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/Sean1708/rusty-cheddar/compare/v0.1.0...v0.2.0