Skip to content

Latest commit

 

History

History
380 lines (233 loc) · 12.1 KB

CHANGELOG.md

File metadata and controls

380 lines (233 loc) · 12.1 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.2.9 — 2023-10-07

Fixed

  • Support NULL bytes in strings sent via Link::put_str(). (#60)

Changed

  • Update minimum supported Rust version (MSRV) to Rust 1.70. Remove dependency on once_cell. (#62)

0.2.8 — 2023-08-28

Changed

  • Change to always use pre-generated WSTP bindings. (#54)

    Previously, wstp-sys would use bindgen at build time to generate bindings to the WSTP library. However, this was somewhat fragile. For example, if libclang is not available on the build machine, building would fail even if WSTP was otherwise available to be linked to.

    Given that the wstp crate only exposes functionality from a minimum-targed WSTP version anyway, using pre-generated bindings for that specific version removes the need for bindgen at compile time (significantly reducing the dependency tree and compile times) while preserving the same functionality.

    docs/Maintenance.md was updated with instructions on how the maintainer can manually generate bindings when wstp / wstp-sys need to be updated to support features available in newer WSTP releases.

  • Remove unused build dependency on bindgen (#56)

Fixed

  • Fix issue with mismatched types causing build failures on Windows. (#55)

    This fixes issue #51.

0.2.7 — 2023-02-03

Added

  • Add logging support to wstp-sys/build.rs. (#49)

    wolfram-app-discovery v0.4.3 added support for logging via the Rust log logging facade library. wstp-sys/build.rs uses wolfram-app-discovery to find a copy of the WSTP SDK.

    Logging messages from wstp-sys/build.rs can now be enabled by setting the RUST_LOG environment to an appropriate value, as documented in the env_logger crate documentation. This can help debug discovery errors that occur during a build.

Changed

  • Increase wolfram-expr dependency version to v0.1.4. (#49)

0.2.6 — 2023-01-06

Fixed

This release fixes several causes of build failures on Linux.

  • Fix use of i8 instead of c_char in variables bound to return values of CStr::from_raw() and CString::into_raw(). (#45)

    c_char is an alias for i8 on macOS, but it is an alias for u8 on Linux.

  • Fix linker errors by setting missing -luuid linker flag in build.rs on Linux. (#46)

    libwstp depends on the Linux libuuid library when targeting Linux.

    On Ubuntu, libuuid is provided by the uuid-dev package.

  • Fix broken automatic discovery of wstp.h and libwstp on Linux by updating wolfram-app-discovery dependency version. (#47)

0.2.5 — 2023-01-03

Added

Fixed

  • Fix issues with WolframKernelProcess::launch() (#42)

    • Fix use of hard-coded linkname. Now a unique linkname is generated automatically.

    • Remove unnecessary background thread, fixing race condition between Link::listen() in the background thread and the link connection in the spawned WolframKernel process.

  • Fix examples in README.md and the crate root doc comment that exhibit the same mistake as WolframKernelProcess::launch() bugs mentioned above. (#42)

Changed

  • Remove redundant attrs on Link::unchecked_ref_cast_mut() (#41)

    Contributed by dtolnay.

0.2.4 – 2022-10-19

Fixed

  • Fix could not find `private` in `ref_cast` compile errors that recently started occurring to due to changes to semver-exempt private items in the ref-cast dependency of wstp. (#39)

    Fortunately, the ref-cast crate recently gained a #[ref_cast_custom] macro, which is the missing feature that had originally required wstp to depend on private internal details of ref-cast as a workaround.

0.2.3 – 2022-09-19

Changed

  • Mention get_u8_array() in the Array type doc comment. (#36)

  • Update wolfram-app-discovery dependency from 0.2.1 to v0.3.0, to take advantage of the improved flexiblity of new API functions tailored for use from build scripts. (#37)

0.2.2 – 2022-05-17

Fixed

  • Fixed wstp-rs build linking issue on Apple Silicon. (#34)

0.2.1 – 2022-03-04

Fixed

  • Fixed documentation build failure in the docs.rs build environment. (#32)

0.2.0 – 2022-03-03

Added

  • Added Windows support for wstp and wstp-sys. (#29)
    • Add build script commands to link to WSTP interface libraries.
    • Use the link-cplusplus crate to link to the C++ standard library (required by the WSTP library) in a reliable cross-platform way.

Changed

  • Changed wstp-sys to generate the Rust bindings to wstp.h at compile time. (#30)

    This ensures that the wstp and wstp-sys crates will compile with a wider range of Wolfram Language versions that provide a suitable version of the WSTP SDK. See the PR description for more info.

0.1.4 – 2022-02-19

Added

  • Added WolframKernelProcess struct, used to create and manage a WSTP connection to a Wolfram Kernel process. (#24)

    WolframKernelProcess can be combined with the wolfram-app-discovery crate to easily launch a new Wolfram Kernel session with no manual configuration:

    use std::path::PathBuf;
    use wolfram_app_discovery::WolframApp;
    use wstp::kernel::WolframKernelProcess;
    
    // Automatically find a local Wolfram Language installation.
    let app = WolframApp::try_default()
        .expect("unable to find any Wolfram Language installations");
    
    let exe: PathBuf = app.kernel_executable_path().unwrap();
    
    // Create a new Wolfram Language session using this Kernel.
    let kernel = WolframKernelProcess::launch(&exe).unwrap();
  • Added Link::put_eval_packet() convenience method to perform evaluations using a connected Wolfram Kernel. (#24)

  • Added types and methods for ergonomic processing of WSTP tokens. (#25)

    A token is the basic unit of expression data that can be read from or written to a link. Use the new Link::get_token() method to ergonomically match over the Token that is readoff of the link:

    use wstp::{Link, Token};
    
    match link.get_token()? {
        Token::Integer(int) => {
            // Do something with `int`.
        },
        Token::Real(real) => {
            // Do something with `real`.
        },
        ...
    }
  • Added Link::end_packet() method. (#23)

  • Added wstp::shutdown(). (#23)

Fixed

  • Fixed Debug formatting of LinkStr to include the string contents. (#23)
  • Upgrade wolfram-app-discovery dependency to v0.2.0 (adds support for app discovery on Windows). (#25)

0.1.3 – 2022-02-08

Fixed

  • Fixed another wstp-sys build failure when built in the docs.rs environment. (#19)

0.1.2 – 2022-02-08

Fixed

  • Fixed wstp-sys build failures when built in the docs.rs environment. (#17)

0.1.1 – 2022-02-08

Fixed

0.1.0 – 2022-02-08

Initial release of the wstp crate.

Added

  • Link struct that represents a WSTP link endpoint, and provides methods for reading and writing symbolic Wolfram Language expressions.

  • LinkServer struct that represents a WSTP TCPIP link server, which binds to a port, listens for incoming connections, and creates a new Link for each connection.