libpulse-binding
A Rust language binding for the PulseAudio libpulse library.
2.30.1
5.8M downloads/mo
#4208 most downloaded on crates.io
jnqnfe/pulse-binding-rust
What this package is like to depend on
Last release 1 years ago
19 Apr 2025
Release timing varies
gaps range from 2 weeks to 1.4 years
Nearly every release is documented
notes for 38 of 38 stable releases
22 versions withdrawn
withdrawn after publishing
9 years old
60 releases · first in 2018
0 releases in the last 12 months
see the full history below
Release timeline
60 releases · Feb 2018 to Apr 2025Releases
latest 60-
2.30.119 Apr 2025Release notes
Open source →- Added a length check to the stream
new_extended()method (missed in previous version). - Added a length check to the stream restore
write()method (missed in previous version).
- Added a length check to the stream
-
2.30.018 Apr 2025Release notes
Open source →- Added
to_owned()methods to a bunch of introspection objects (as requested back in 2021 in issue 44). Thanks to @t4ccer on github for prompting this and providing an initial partial implementation. - Added
set_corked_state()method toStreamproviding an alternative to usingcork()anduncork(). - Added length checks to the
set_prop_int_array()andset_prop_string_array()methods offormat::Info. Now should you happen to pass in an array with a length larger than can fit within thelenparameter of the C function, it will panic. - Dropped additional long-deprecated constants, missed in the previous version.
- Dropped long-deprecated
check_version()function. - Dropped deprecated
CardProfileInfo2introspection alias.
- Added
-
2.29.003 Mar 2025Release notes
Open source →- Bumped MSRV from 1.56 to 1.63 per libc dependency.
- Fixed warnings by removing explicit calls to
clone()that have become unnecessary. - Fixed warnings by bumping
num-derivedependency. - Bumped
bitflagsdependency to version 2.x (required addingDebugto a few flagsets). - Dropped various constants that were deprecated back in versions 2.20 and 2.21 (December 2020).
- Updated with PA version 17 changes (just an increase to max. sample rate).
- Updated required dependencies:
libpulse-sysfrom 1.21 to 1.22.num-derivefrom 0.3 to 0.4.bitflagsfrom 1.2 to 2.x.
-
2.28.302 Mar 2025Release notes
Open source →- Clarify in documenation that mainloop and context objects must both live for the entire duration.
-
2.28.227 Nov 2024Release notes
Open source →- Fixed crash when audio device has null device but non-null name, thanks to @AdriaanPrinsloo on github.
- Fixed a couple documentation typos.
-
2.28.118 Jul 2023Release notes
Open source →i forgot to do this as part of the previous release. i already published
the new sys crates so will have to yank them (exceptpulse-syswhich has
no dependency on the other crates of course). -
2.27.109 Jan 2023 -
2.27.009 Jan 2023Release notes
Open source →- Bumped Rust edition to 2021.
- Bumped MSRV from 1.46 to 1.56.
- Added
rust-version(MSRV) attribute tocargo.tomlfile. - Tweaked some doc-tests to work with rust v1.63+ (at the expense of not working with older
versions). This relates to float-point calculation changes in
Duration::try_from_secs_f32/64made in rust stdlib version 1.60 and further tweaked in 1.63. See [this issue][issue48]. - Updated required dependencies:
libpulse-sysfrom 1.19 to 1.20.
-
2.26.013 Jan 2022Release notes
Open source →- Changed the type of the
timestampmember ofdef::TimingInfofromTimevaltoUnixTssince it is actually a system time not a generic duration. - Time: Added missing
#[repr(transparent)]marker toMicroSeconds. - Time: Made use of
#[track_caller]such that panics from overflows and such in math operation implementations will point to the caller as the source of the problem.
- Changed the type of the
-
2.25.029 Aug 2021Release notes
Open source →- Made the attributes of
MainloopInnerprivate. Methodsnew()andget_api_ptr()were added to support this, whileget_ptr()was markedunsafe. - Converted
channelmap::Position::to_mask()toconst fn. - Bumped MSRV from 1.41 to 1.46 to better reflect practical requirement since bitflags v1.3 now requires 1.46 and I expect it likely that most projects will promptly be upgrading it.
- Minor tweaks not worth documenting.
- Fixed wrong version for previous changelog entry.
- Made the attributes of
-
2.24.029 Jul 2021Release notes
Open source →- Added PA v15 support (API additions):
- Added
Introspector::send_message_to_object(). - Added
proplist::properties::{CONTEXT_FORCE_DISABLE_SHM, BLUETOOTH_CODEC}.
- Added
- Updated required dependencies:
libpulse-sysfrom 1.18 to 1.19.
- Added PA v15 support (API additions):
-
2.23.109 Apr 2021 -
2.23.030 Jan 2021Release notes
Open source →- Implemented
std::error::Errorforerror::{Code, PAErr}. - Implemented
DebugforListResult. - Now using intra-doc-linking introduced in Rust 1.48. The MSRV remains unchanged at 1.41; this is too great a simplification to maintaining documentation to not implement immediately; the only negative is that links will be broken in locally generated documentation when built with an older Rust compiler than version 1.48.
- Minor documentation fixes.
- Re-implemented list-callback handling (internal change only).
- Updated required dependencies:
libpulse-sysfrom 1.17 to 1.18.
- Implemented
-
2.22.022 Dec 2020Release notes
Open source →- The
Contextcreation functionsnew()andnew_with_proplist()will now fail if the version of the PulseAudio client system library is older then the minimum compatibility level set via use of the version feature flags. This is done to block use of the library in such a circumstance as a means of helping to prevent the undefined behaviour that could result from the possible “forward” compatibility problems discussed in the projectCOMPATIBILITY.mddocumentation. - Added the following functions to help check the version of the PA system library at runtime:
version::get_library_version_numbers(),version::compare_with_library_version()andversion::library_version_is_too_old(). - Tweaked version constants.
- Deprecated
version::check_version(). - Updated required dependencies:
libpulse-sysfrom 1.16 to 1.17.
- The
-
2.21.015 Dec 2020Release notes
Open source →- Converted
context::FlagSetto a [bitflags] type, moving thecontext::flags::*constants to associated constants of it, deprecating the old constant set. This was overlooked in 2.20.
- Converted
-
2.20.115 Dec 2020Release notes
Open source →- Fixed mistake made trying to conditionally enable
#[cfg(doc)]for docs.rs.
- Fixed mistake made trying to conditionally enable
-
2.20.015 Dec 2020Release notes
Open source →- Made some changes to cargo features:
- Removed the now obsolete
doxcargo feature. - Removed the
pa_latestandpa_latest_commoncargo features. - Changed the default version feature level to
pa_v8.
- Removed the now obsolete
- MSRV bumped from 1.40 to 1.41.
- Re-wrote the
COMPATIBILITY.mdguide (available in the code repo), including adding important discussion of the hazard of “forward compatibility” concerns. - Improved the basic implementations of integer operations
Add,Sub,Mul,DivandRemfor time types, such that those that were not previously making use of “checked” calculations now do so, and thus overflow causes a panic rather than being wrapped. If panicing is not wanted, the “checked” methods should be used directly which return aNoneon failure. - Added an
Optionwrapper to thevolumeparam ofContext::play_sample()andContext::play_sample_with_proplist()“scache” methods to simplify usage. SupplyingNoneis a nicer alternative to passingVolume::INVALID. - Moved the following functions from the
samplemod to methods ofsample::Spec:format_is_valid(),rate_is_valid()andchannels_are_valid(), having noticed that they clearly relate to the attributes of that type and so should have been there all along. - Shrunk the type of the
channelsparam ofchannelmap::Mapmethodsinit_auto()andinit_extend()fromu32tou8. - Shrunk the
sample::CHANNELS_MAXtype fromusizetou8. - Moved many existing constants to be associated constants (long overdue):
- Deprecated
sample::{CHANNELS_MAX, RATE_MAX}. - Added
sample::Spec::{CHANNELS_MAX, RATE_MAX}replacements. - Added
volume::ChannelVolumes::CHANNELS_MAXreplacement. - Deprecated
volume::{VOLUME_NORM, VOLUME_MUTED, VOLUME_MAX, VOLUME_INVALID}. - Added
volume::Volume::{NORMAL, MUTED, MAX, INVALID}replacements. - Deprecated
volume::DECIBEL_MINUS_INFINITY. - Added
volume::VolumeDB::MINUS_INFINITYreplacement. - Deprecated
time::{USEC_INVALID, USEC_MAX}. - Added
time::MicroSeconds::{INVALID, MAX}replacements. - Deprecated
context::subscribe::{FACILITY_MASK, OPERATION_MASK}. - Added
context::subscribe::{Facility::MASK, Operation::MASK}replacements.
- Deprecated
- Made some improvements to
MicroSeconds:- Added
MicroSeconds::{MIN, ZERO, SECOND, MILLISECOND}associated constants. - Added
MicroSeconds::is_zero(),MicroSeconds::from_secs(),MicroSeconds::from_millis(),MicroSeconds::inner(),MicroSeconds::as_secs(),MicroSeconds::as_millis(), andMicroSeconds::diff(). - Additionally added
MicroSeconds::from_secs_f64(),MicroSeconds::from_secs_f32(),MicroSeconds::as_secs_f64()andMicroSeconds::as_secs_f32()for converting to/from floating point form, andMicroSeconds::mul_f32(),MicroSeconds::mul_f64(),MicroSeconds::div_f32()andMicroSeconds::div_f64()for multiplication and division by floats. - Removed the restriction using
Muloperations between an integer primitive and aMicroSecondsthat required the Rhs to be the integer, by extending the implementation. Thus you can now do2 * MicroSeconds(20)not justMicroSeconds(20) * 2. - Enabled
MicroSecondsto be added or subtracted from aDuration, not just the other way around.
- Added
- Improved handling of flag sets through making use of [
bitflags] (long overdue). The following types which have been simple integer primitive type aliases have now been changed to [bitflags] wrappers. The set of flags associated with them have been thus assigned as associated constants to them, and the separate set marked as deprecated.stream::FlagSet, with itsstream::flags::*flags.def::{SinkFlagSet, SourceFlagSet}and theirdef::sink_flags::*anddef::source_flags::*flag sets.direction::FlagSetand itsdirection::flags::*flags.mainloop::events::io::IoEventFlagSetand itsmainloop::events::io::flags::*flags.context::subscribe::InterestMaskSetand itscontext::subscribe::subscription_masksflags.
- Renamed the
mainloop::events::io::IoEventFlagSettype to simplyFlagSet. - Renamed the
MASK_CARDconstant fromcontext::subscribeto simplyCARD, since the inclusion ofMASK_in the name was a mistake (part of a prefix removed from others but mistakenly left in place for this one). - Moved
direction::is_valid()anddirection::to_string()to methods ofdirection::FlagSet. - Added
MonotonicTs::checked_add_duration()andMonotonicTs::checked_sub_duration()along with correspondingAdd[Assign]andSub[Assign]impls for adding aDurationtoMonotonicTs. This complements the existing functionality for adding aMicroSeconds, without requiring conversion of aDurationto aMicroSeconds. - Made use of
#[cfg(doc)]to always include stuff behind PA version feature guards in generated documentation. (Required bump of minimum supported Rust version from 1.40 to 1.41). - Added support for feature tagging in documentation (requires nightly Rust version, so only enabled if a certain config flag is used, as for the docs.rs copy).
- Marked
version::Compatibilityas#[non_exhaustive]. - Updated required dependencies:
libpulse-sysfrom 1.15 to 1.16.bitflags1.2 now required.
- Made some changes to cargo features:
-
2.19.008 Dec 2020Release notes
Open source →- Fixed broken conversions between
Durationand other time duration types (MicroSecondsandTimeval), which were mistakenly converting based upon milliseconds rather than microseconds and thus were off by a scale of 1000. Lack of tests failed to catch this, which have now been added. - Added missing
Defaultimplementation forchannelmap::MapDef. - Added documentation for
version::check_version(). If you use it, please double check that it actually does what you think it does. It does not involve talking to the client library.
- Fixed broken conversions between
-
2.18.125 Nov 2020 -
2.18.025 Nov 2020Release notes
Open source →- Marked
format::Encodingas#[non_exhaustive]. - Replaced the
From<PAErr> for Codeimpl withTryFrom<PAErr> for Code, since the conversion is fallible and now thatTryFromhas been stable for a while (since 1.40). Unfortunately it was not possible to leave theFromversion in place with a deprecation notice due to conflicts that result. The solution was also re-implemented based uponFromPrimitive. - Implemented
std::fmt::Displayforerror::Code. - Added derive of
FromPrimitiveandToPrimitivefrom thenum-derivecrate on basic enums. - Fixed an extremely unlikely but possible source of undefined behaviour in introspection. This relates to translation of a few integers into enum variants. Previously values that did not match an enum variant would be transmuted to the enum type anyway, resulting in undefined behaviour. Now a panic will occur instead. Pragmatically you should never encounter this, so no advisory is being issued - it would only occur via a bug in PulseAudio, the mapping, or a mismatch in version compatibility with the running PulseAudio client library, with this latter issue being something dangerous that users must avoid anyway.
- Some test additions.
- Updated required dependencies:
libpulse-sysfrom 1.14 to 1.15.num-traits0.2 now required.num-derive0.3 now required.
- Marked
-
2.17.024 Nov 2020Release notes
Open source →- Added PA v14 support (API additions).
- Mainloop (standard): Changed the
prepare()method to take anOption<MicroSeconds>instead ofOption<i32>. - Renamed the error
Code::Ioenum variant toCode::IO. - Updated required dependencies:
libpulse-sysfrom 1.13 to 1.14.
-
2.16.321 Nov 2020 -
2.16.209 Sep 2020 -
2.16.110 Jul 2020Release notes
Open source →- Fixed some dangling pointer issues with handling of string arrays, thanks to @yatinmaan on github.
-
2.16.018 Apr 2020Release notes
Open source →- Made the attributes of
channelmap::{ChannelVolumes, Map}types private. (Direct access had been deprecated previously). - Removed deprecated comparison methods.
- Removed deprecated proplist methods.
- Removed deprecated Cargo features.
- Updated required dependencies:
libpulse-sysfrom 1.12 to 1.13.
- Made the attributes of
-
2.15.118 Apr 2020Release notes
Open source →- Fixed issues with a threaded mainloop example in the documentation.
- Fixed miscellaneous other documentation mistakes.
-
2.15.029 Dec 2019 -
2.14.129 Dec 2019Release notes
Open source →- Fixed issues compiling on Windows:
- Needed to reference a different
pollfddefinition - Needed to reference different inner
timevalattribute type definitions Thanks to @allquixotic on github for reporting.
- Needed to reference a different
- Fixed issues compiling on Windows:
-
2.14.028 Oct 2019Release notes
Open source →- Reverted "Changed the
mainloopparam ofContext::rttime_new()from trait object to generic (dyntoimpl)" from v2.7. Failed to test sufficiently. This introduces an E0632 error in a test app and I was unsuccessful in finding a compilable workaround.
- Reverted "Changed the
-
2.13.017 Sep 2019Release notes
Open source →- Changed the license model from LGPL to dual MIT and Apache-2.0. See [here][issue26] for details.
- Updated required dependencies:
libpulse-sysfrom 1.10 to 1.11.
-
2.12.015 Sep 2019Release notes
Open source →- Implemented PA v13 enhancements, including:
- Added
get_sample_format(),get_rate(),get_channel_count()andget_channel_map()methods toformat::Info. - Added
util::make_thread_realtime(). - Added
Encoding::TRUEHD_IEC61937andEncoding::DTSHD_IEC61937. - A wrapper for
pa_threaded_mainloop_once_unlockedhas not been added at this time.
- Added
- Changed the
ssparam ofContext::get_tile_size()to add anOptionwrapper. The C API function allows a null pointer to be used for this param, which was not a use case allowed in the binding, for no particular reason. This enables it. - Added PA v13 compatibility control feature.
- Updated required dependencies:
libpulse-sysfrom 1.9 to 1.10.
- Implemented PA v13 enhancements, including:
-
2.11.119 Aug 2019 -
2.11.019 Aug 2019Release notes
Open source →- Extended support to even older versions of PA, specifically up to and including v4.
- Revised
version::Compatibilityvariants to make more sense. - Simplified feature flags, old ones left as temporary aliases, to be removed later.
- Added a
doxfeature flag, for use withcargo doc. It enables the very latest PA version compatibility, while bypassing the pkg-config check, thus is useful for generating documentation that includes information on features from versions of PA that may be newer than the version you have installed. - Improved version documentation further.
- Updated required dependencies:
libpulse-sysfrom 1.8 to 1.9.
-
2.10.117 Aug 2019Release notes
Open source →- Version: Improved mod documentation.
- Added missing version info to deprecation notices.
-
2.10.015 Aug 2019Release notes
Open source →- Modified
channelmap::{ChannelVolumes, Map}types to be more Rust-like. Both of these types hold an array of sizesample::CHANNELS_MAX, along with achannelsattribute which controls how much of the initial portion of that array is “active” (equivalent to thelen()of aVec). Previously the array and len were simply public attributes, with changes to be applied directly. While for the time being they remain publicly accessible for backwards compatibility, this will become private in a future release. These types should now be used in a way more similar to aVec:- New methods
len()andset_len()get read/write access to thechannelsattribute that records how much of the array is considered “active”. - Traits
Borrow<[_]>andBorrowMut<[_]>have been implemented, along with the addition of new methodsget()andget_mut()(for convenience - you can avoid type ambiguity), for accessing the array as a slice (of just the “active” portion).
- New methods
- Updated
useconventions to that of Rust 1.30/1.31. - Specified edition in toml file.
- Made the following functions
const:version::get_compatibility().Volume::is_valid().Timeval::new()andTimeval::new_zero().subscribe::Facility::to_interest_mask().
- Version: purged deprecated items.
- Updated required dependencies:
libpulse-sysfrom 1.6 to 1.8.
Note: versions 2.8 and 2.9 skipped, used only for
libpulse-glib-bindingcrate changes. - Modified
-
2.7.113 Aug 2019 -
2.7.012 Aug 2019Release notes
Open source →- Renamed a few methods of
Proplistfor clarity:Proplist::sets()toProplist::set_str().Proplist::gets()toProplist::get_str().Proplist::setp()toProplist::set_pl().
- Added
Stream::write_copy()which is just a simplified interface for asking PA to make an internal copy of the to-be-written data (same as providingNonein thefree_cbparam ofStream::write(). - Changed the
mainloopparam ofContext::rttime_new()from trait object to generic (dyntoimpl). - Made better use of
PartialEqimplementations:- Deprecated
ChannelMap::is_equal_to(),ChannelVolumes::equal_to(),ChannelVolumes::channels_equal_to(),Spec::equal_to(), andProplist::equal_to()in favour ofPartialEqimplementations. - Added implementation for
ProplistandPartialEq<Volume>impl forChannelVolumes.
- Deprecated
- Changed
PartialEqimplementations forchannelmap::{Map, Spec, ChannelVolumes}to delegate the logic to the C API. - Removed stray
repr(C)attribute fromSinkPortInfointrospection type. - Added a new
latest_pa_common_compatibilityfeature flag, used by default now instead oflatest_pa_compatibility. - Added tests to assert that size and alignment of certain structs and enums are identical to their
syscrate counterparts. - Updated required dependencies:
libpulse-sysfrom 1.5 to 1.6.
- Renamed a few methods of
-
2.6.011 Mar 2019 -
2.5.022 Dec 2018 withdrawnRelease notes
Open source →Note: This includes a security fix!
- Fixed potential use-after-free with
proplist::Iterator(not to be confused with thestd::iter::Iteratortrait). An instance of this object type is created from aProplistobject and holds a copy of the same raw pointer to the underlying C object; theProplistobject had sole responsibility for destroying it via itsDropimplementation. There was no actual lifetime association however linking the lifetime of theIteratorobject to theProplistobject, and thus it was possible for theProplistobject to be destroyed first, leaving theIteratorobject working on a freed C object. This is unlikely to have been done in actual user code, but would have been trivial to achieve, including simply by using theinto_iter()function. This affects versions all the way back to 1.0.5. - Enabled
Send+Syncfor various types. This was previously not done due to uncertainty as to whether or not it was safe to do so, but I have now reconsidered it and arrived at the conclusion that it should be okay: With the threaded mainloop, a lock must be held when using objects; this is taken by the mainloop dispatcher when executing callbacks, and otherwise must be taken by the user before using objects within any thread. With that locking mechanism, it should be safe I presume for these objects to be marked Send+Sync. It is not ideal that the user can so easily just forget to grab the lock, as opposed to the Rust design ofArc<Mutex<_>>forcing unlocking to get at things, but it’s not certain that we can easily really do anything to address this. So long as users stick to the principle of grabbing the mainloop lock though, they should be fine. - Simplified converting
DurationtoMicroSecondsorTimevalusingDuration::subsec_millis(). - Made
proplist::Iterator::new()private, since it’s very unlikely anyone needs it. - Added the new
latest_pa_compatibilityandpa_v12_compatibilityfeature flags, and deprecatedpa_encoding_from_stringin favour ofpa_v12_compatibility. - Removed unnecessary
Fromconversion implementation to/from C type forformat::Info. - Updated required dependencies:
libpulse-sysfrom 1.4 to 1.5.
- Fixed potential use-after-free with
-
2.4.028 Nov 2018 withdrawnRelease notes
Open source →- Changed the
channelmap::Map::new_from_string()method return value to use aResultwrapper. Previously failure was just ignored, expecting strings provided to always be valid, as obtained from theMap::print()andMap::to_name()methods, but let's be more cautious. - Updated out-of-date documentation of return types for a large number of functions, particularly
introspection ones, which had not been updated following the removal of the
Optionwrapper back in v2.0. Thanks to @0xpr03 on github for noticing a discrepancy. - Restored the
Optionwrapper to theContext::drain()return value. It was incorrectly removed from this function at the same time as legitimately being removed from many others. - Changed the
Dropimplementation onStreamto no longer unwrap theResultreturned by thedisconnect()attempt it makes. This should fix [this problem][issue11] encountered by @futpib on github.
- Changed the
-
2.3.004 Nov 2018 withdrawnRelease notes
Open source →- Improved the
versionmod:- Constants now vary depending upon backwards compatibility flags, correctly indicating the newest supported PA version.
- Added the
Compatibilityenum andget_compatibility()function. - Renamed
BINDING_TARGET_VERSIONtoTARGET_VERSION_STRING. - Introduced
TARGET_VERSIONand deprecatedMAJOR,MINORandMICRO. - Deprecated
get_headers_version().
- Clarified PA version compatibility in
versionmod. - Clarified
pa_encoding_from_stringfeature purpose. - Updated required dependencies:
libpulse-sysfrom 1.3 to 1.4.
- Improved the
-
2.2.628 Oct 2018 withdrawn -
2.2.511 Oct 2018 withdrawn -
2.2.408 Oct 2018 withdrawnRelease notes
Open source →- Added dedicated changelog, split off from the old single project overview one.
- Included copy of license file in bundled package and excluded the
.gitignoreandREADME.mdfiles.
-
2.2.320 Sep 2018 withdrawn -
2.2.203 Sep 2018 withdrawnRelease notes
Open source →- Added homepage and repo links, thanks to @berkus on github for the patch.
-
2.2.129 Aug 2018 withdrawnRelease notes
Open source →- Fixed reported compilation errors in the
timemode on macOS and raspberry pi platforms. Thanks to @noahbkim on github for reporting and @ssendev for the suggested solution.
- Fixed reported compilation errors in the
-
2.2.021 Aug 2018 withdrawnNothing published for this version
-
2.1.017 Jul 2018 withdrawnNothing published for this version
-
2.0.126 Jun 2018 withdrawnRelease notes
Open source →- Updated declared PA version compatibility (11.0 → 12.0).
Operation: Documented possible memory leak.Proplist: Fixed debug output to use comma separator rather than newline (for consistency in dumping introspection data), and output in list style instead of mixed struct/list style.- Documentation typo fixes.
- Updated version in
READMEusage example.
-
2.0.016 Jun 2018 withdrawnNothing published for this version
-
1.2.216 Jun 2018 withdrawn -
1.2.115 Jun 2018 withdrawnRelease notes
Open source →Note: This includes a security fix!
- Fixed use-after-frees with
Stream::get_format_info()andStream::get_context(). These should have usedStream::from_raw_weak()instead ofStream::from_raw()to avoid incorrectly freeing the underlying C object, leaving a dangling pointer.
- Fixed use-after-frees with
-
1.2.002 Jun 2018 withdrawnNothing published for this version
-
1.1.029 May 2018 withdrawnNothing published for this version
-
1.0.529 May 2018 withdrawnRelease notes
Open source →- Fixed and simplified
Proplistiteration:- Fixed an infinite loop bug: I misread the documentation, it’s the return value from the C function call that will be NULL when it reaches the end of the list, not the state variable.
- Fixed infinite loop bug #2: The state tracking variable used for the underlying C function
cannot be hidden within the iterate function, it causes an infinite loop whereby the function
always just returns the first entry wrapped in
Some. I don’t know what I was thinking. - Implemented proper iterator semantics. The
iterate()method was renamediter()and now returns an actual RustIteratorobject, which makes iterating much more simple and tidy.
- Made
selfimmutable forCVolume::is_muted()andCVolume::is_norm(). - Fixed unwanted double option wrapping of callback fn ptr with
Streamwrite methods. - Combined
Stream::write_ext_free()’sfree_cb_dataparam withfree_cbas tuple, as done elsewhere.
Note, version number 1.0.4 skipped (it was used for non-crate project changes).
- Fixed and simplified
-
1.0.310 Feb 2018 withdrawnRelease notes
Open source →- Added
Frommethods for transmuting between certain introspection structs and theirsyscounterparts. (They are identical, and only duplicated in the binding to add documentation).
- Added
-
1.0.209 Feb 2018 withdrawn -
1.0.102 Feb 2018 withdrawnRelease notes
Open source →- Fixed toml file license string
LGPL-2.1→LGPL-2.1+. - Fixed toml file missing author email address.
- Removed obsolete readme doc links.
- Fixed toml file license string
-
1.0.001 Feb 2018 withdrawnNothing published for this version