1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
//! Project changelog // TODO: for the next breaking release rename `Error::LoadLibraryW` to `Error::LoadLibraryExW`. // TODO: for the next breaking release use `RTLD_LAZY | RTLD_LOCAL` by default on unix. /// Release 0.6.7 (2021-01-14) /// /// * Added a [`os::windows::Library::open_already_loaded`] to obtain a handle to a library that /// must already be loaded. There is no portable equivalent for all UNIX targets. Users who do not /// care about portability across UNIX platforms may use [`os::unix::Library::open`] with /// `libc::RTLD_NOLOAD`; /// /// [`os::windows::Library::open_already_loaded`]: crate::os::windows::Library::open_already_loaded /// [`os::unix::Library::open`]: crate::os::unix::Library::open pub mod r0_6_7 {} /// Release 0.6.6 (2020-12-03) /// /// * Fix a double-release of resources when [`Library::close`] or [`os::windows::Library::close`] /// is used on Windows. /// /// [`Library::close`]: crate::Library::close /// [`os::windows::Library::close`]: crate::os::windows::Library::close pub mod r0_6_6 {} /// Release 0.6.5 (2020-10-23) /// /// * Upgrade cfg-if 0.1 to 1.0 pub mod r0_6_5 {} /// Release 0.6.4 (2020-10-10) /// /// * Remove use of `build.rs` making it easier to build `libloading` without cargo. It also /// almost halves the build time of this crate. pub mod r0_6_4 {} /// Release 0.6.3 (2020-08-22) /// /// * Improve documentation, allowing to view all of the os-specific functionality from /// documentation generated for any target; /// * Add [`os::windows::Library::this`]; /// * Added constants to use with OS-specific `Library::open`; /// * Add [`library_filename`]. /// /// [`os::windows::Library::this`]: crate::os::windows::Library::this /// [`library_filename`]: crate::library_filename pub mod r0_6_3 {} /// Release 0.6.2 (2020-05-06) /// /// * Fixed building of this library on Illumos. pub mod r0_6_2 {} /// Release 0.6.1 (2020-04-15) /// /// * Introduced a new method [`os::windows::Library::load_with_flags`]; /// * Added support for the Illumos triple. /// /// [`os::windows::Library::load_with_flags`]: crate::os::windows::Library::load_with_flags pub mod r0_6_1 {} /// Release 0.6.0 (2020-04-05) /// /// * Introduced a new method [`os::unix::Library::get_singlethreaded`]; /// * Added (untested) support for building when targetting Redox and Fuchsia; /// * The APIs exposed by this library no longer panic and instead return an `Err` when it used /// to panic. /// /// ## Breaking changes /// /// * Minimum required (stable) version of Rust to build this library is now 1.40.0; /// * This crate now implements a custom [`Error`] type and all APIs now return this type rather /// than returning the `std::io::Error`; /// * `libloading::Result` has been removed; /// * Removed the dependency on the C compiler to build this library on UNIX-like platforms. /// `libloading` used to utilize a snippet written in C to work-around the unlikely possibility /// of the target having a thread-unsafe implementation of the `dlerror` function. The effect of /// the work-around was very opportunistic: it would not work if the function was called by /// forgoing `libloading`. /// /// Starting with 0.6.0, [`Library::get`] on platforms where `dlerror` is not MT-safe (such as /// FreeBSD, DragonflyBSD or NetBSD) will unconditionally return an error when the underlying /// `dlsym` returns a null pointer. For the use-cases where loading null pointers is necessary /// consider using [`os::unix::Library::get_singlethreaded`] instead. /// /// [`Library::get`]: crate::Library::get /// [`os::unix::Library::get_singlethreaded`]: crate::os::unix::Library::get_singlethreaded /// [`Error`]: crate::Error pub mod r0_6_0 {} /// Release 0.5.2 (2019-07-07) /// /// * Added API to convert OS-specific `Library` and `Symbol` conversion to underlying resources. pub mod r0_5_2 {} /// Release 0.5.1 (2019-06-01) /// /// * Build on Haiku targets. pub mod r0_5_1 {} /// Release 0.5.0 (2018-01-11) /// /// * Update to `winapi = ^0.3`; /// /// ## Breaking changes /// /// * libloading now requires a C compiler to build on UNIX; /// * This is a temporary measure until the [`linkage`] attribute is stabilised; /// * Necessary to resolve [#32]. /// /// [`linkage`]: https://github.com/rust-lang/rust/issues/29603 /// [#32]: https://github.com/nagisa/rust_libloading/issues/32 pub mod r0_5_0 {} /// Release 0.4.3 (2017-12-07) /// /// * Bump lazy-static dependency to `^1.0`; /// * `cargo test --release` now works when testing libloading. pub mod r0_4_3 {} /// Release 0.4.2 (2017-09-24) /// /// * Improved error and race-condition handling on Windows; /// * Improved documentation about thread-safety of Library; /// * Added `Symbol::<Option<T>::lift_option() -> Option<Symbol<T>>` convenience method. pub mod r0_4_2 {} /// Release 0.4.1 (2017-08-29) /// /// * Solaris support pub mod r0_4_1 {} /// Release 0.4.0 (2017-05-01) /// /// * Remove build-time dependency on target_build_utils (and by extension serde/phf); /// * Require at least version 1.14.0 of rustc to build; /// * Actually, it is cargo which has to be more recent here. The one shipped with rustc 1.14.0 /// is what’s being required from now on. pub mod r0_4_0 {} /// Release 0.3.4 (2017-03-25) /// /// * Remove rogue println! pub mod r0_3_4 {} /// Release 0.3.3 (2017-03-25) /// /// * Panics when `Library::get` is called for incompatibly sized type such as named function /// types (which are zero-sized). pub mod r0_3_3 {} /// Release 0.3.2 (2017-02-10) /// /// * Minimum version required is now rustc 1.12.0; /// * Updated dependency versions (most notably target_build_utils to 0.3.0) pub mod r0_3_2 {} /// Release 0.3.1 (2016-10-01) /// /// * `Symbol<T>` and `os::*::Symbol<T>` now implement `Send` where `T: Send`; /// * `Symbol<T>` and `os::*::Symbol<T>` now implement `Sync` where `T: Sync`; /// * `Library` and `os::*::Library` now implement `Sync` (they were `Send` in 0.3.0 already). pub mod r0_3_1 {} /// Release 0.3.0 (2016-07-27) /// /// * Greatly improved documentation, especially around platform-specific behaviours; /// * Improved test suite by building our own library to test against; /// * All `Library`-ies now implement `Send`. /// * Added `impl From<os::platform::Library> for Library` and `impl From<Library> for /// os::platform::Library` allowing wrapping and extracting the platform-specific library handle; /// * Added methods to wrap (`Symbol::from_raw`) and unwrap (`Symbol::into_raw`) the safe `Symbol` /// wrapper into unsafe `os::platform::Symbol`. /// /// The last two additions focus on not restricting potential usecases of this library, allowing /// users of the library to circumvent safety checks if need be. /// /// ## Breaking Changes /// /// `Library::new` defaults to `RTLD_NOW` instead of `RTLD_LAZY` on UNIX for more consistent /// cross-platform behaviour. If a library loaded with `Library::new` had any linking errors, but /// unresolved references weren’t forced to be resolved, the library would’ve “just worked”, /// whereas now the call to `Library::new` will return an error signifying presence of such error. /// /// ## os::platform /// * Added `os::unix::Library::open` which allows specifying arbitrary flags (e.g. `RTLD_LAZY`); /// * Added `os::windows::Library::get_ordinal` which allows finding a function or variable by its /// ordinal number; pub mod r0_3_0 {}