PackageTrack
Sign in Get early access

maxminddb

Library for reading MaxMind DB format used by GeoIP2 and GeoLite2

0.30.0 28M downloads/mo #1739 most downloaded on crates.io oschwald/maxminddb-rust

What this package is like to depend on

Last release 1 months ago

19 Jul 2026

Release timing varies

gaps range from 2 weeks to 1.8 years

Some releases are documented

notes for 34 of 57 stable releases

Nothing withdrawn

no release was ever pulled

12 years old

58 releases · first in 2014

8 releases in the last 12 months

see the full history below

Release timeline

58 releases · Nov 2014 to Jul 2026
2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 58
  1. 0.30.0 19 Jul 2026
    Release notes
    • Added deserialize_any_with_raw_strings() for Serde-based format adapters
      to validate MMDB strings while constructing another runtime's native string
      type, avoiding duplicate UTF-8 validation without unsafe Rust. Adapters
      remain responsible for strict UTF-8 validation.
    • Fixed network iteration on cyclic or over-deep corrupt search trees so it
      returns an error instead of looping indefinitely.
    • Fixed decode_path() error rendering for extreme negative indexes and
      reduced path traversal header parsing.
    • Removed decoder logging checks from hot deserialization paths.
    • Fixed verify() to validate shared data-section pointer targets once, reject
      pointer cycles, invalid scalar encodings, and impossible container sizes.
    Open source →
    Release notes
    • Added deserialize_any_with_raw_strings() for Serde-based format adapters to validate MMDB strings while constructing another runtime's native string type, avoiding duplicate UTF-8 validation without unsafe Rust. Adapters remain responsible for strict UTF-8 validation.
    • Fixed network iteration on cyclic or over-deep corrupt search trees so it returns an error instead of looping indefinitely.
    • Fixed decode_path() error rendering for extreme negative indexes and reduced path traversal header parsing.
    • Removed decoder logging checks from hot deserialization paths.
    • Fixed verify() to validate shared data-section pointer targets once, reject pointer cycles, invalid scalar encodings, and impossible container sizes.
    Open source →
  2. 0.29.0 28 Jun 2026
    Release notes
    • Breaking: Metadata::build_time() now returns
      Result<SystemTime, MaxMindDbError> instead of panicking on
      unrepresentable timestamps, and databases whose build_epoch cannot be
      represented as SystemTime are rejected as invalid during open and verify.
    • Breaking: Reader::metadata is now private. Use Reader::metadata() to
      access validated metadata by shared reference.
    • Breaking: Opening a database now rejects unsupported major format versions,
      unsupported IP versions, and zero-node search trees. Minor format versions
      are still accepted for forward compatibility.
    • Fixed: within() and networks() now handle IPv6 databases without an
      IPv4 subtree without reading terminal data nodes as tree nodes or
      panicking while formatting low IPv6 networks.
    • Fixed: Skipping ignored or unknown fields now enforces data-section
      bounds and the maximum nesting depth instead of accepting truncated
      values or overflowing the stack on deeply nested corrupt data.
    • Internal: Added focused benchmarks for network iteration and serde
      unknown-field skipping, plus metadata build-time conversion, to guard
      performance-sensitive fixes.
    • Documentation: Fixed intra-doc links so docs build with warnings denied,
      and added a CI check to keep them passing.
    Open source →
    Release notes
    • Breaking: Metadata::build_time() now returns Result<SystemTime, MaxMindDbError> instead of panicking on unrepresentable timestamps, and databases whose build_epoch cannot be represented as SystemTime are rejected as invalid during open and verify.
    • Breaking: Reader::metadata is now private. Use Reader::metadata() to access validated metadata by shared reference.
    • Breaking: Opening a database now rejects unsupported major format versions, unsupported IP versions, and zero-node search trees. Minor format versions are still accepted for forward compatibility.
    • Fixed: within() and networks() now handle IPv6 databases without an IPv4 subtree without reading terminal data nodes as tree nodes or panicking while formatting low IPv6 networks.
    • Fixed: Skipping ignored or unknown fields now enforces data-section bounds and the maximum nesting depth instead of accepting truncated values or overflowing the stack on deeply nested corrupt data.
    • Internal: Added focused benchmarks for network iteration and serde unknown-field skipping, plus metadata build-time conversion, to guard performance-sensitive fixes.
    • Documentation: Fixed intra-doc links so docs build with warnings denied, and added a CI check to keep them passing.
    Open source →
  3. 0.28.1 26 Apr 2026
    Release notes
    • Fixed: Databases with an impossible declared search tree size are now
      rejected during open/verify instead of causing runaway allocation
      during validation.
    • Fixed: within() now rejects IPv6 CIDRs on IPv4-only databases instead
      of yielding unrelated networks.
    • Fixed: Verification now rejects truncated scalar/string payloads instead
      of skipping past them and reporting the database as valid.
    • Fixed: LookupResult::network() now uses the reader's measured IPv4
      subtree depth instead of assuming it always begins at bit 96.
    Open source →
    Release notes
    • Fixed: Databases with an impossible declared search tree size are now rejected during open/verify instead of causing runaway allocation during validation.
    • Fixed: within() now rejects IPv6 CIDRs on IPv4-only databases instead of yielding unrelated networks.
    • Fixed: Verification now rejects truncated scalar/string payloads instead of skipping past them and reporting the database as valid.
    • Fixed: LookupResult::network() now uses the reader's measured IPv4 subtree depth instead of assuming it always begins at bit 96.
    Open source →
  4. 0.28.0 25 Apr 2026
    Release notes
    • Performance improvement: Faster search-tree traversal by dispatching
      on the database's record size to monomorphized node readers, replacing
      per-step branching on the record size.
    • Performance improvement: Direct deserialization of scalars, sequences,
      maps, and structs through dedicated fast paths instead of routing
      through deserialize_any.
    • Performance improvement: IPv4 and IPv6 lookups dispatch to dedicated
      paths, avoiding per-call address-kind checks on the hot path.
    • Behavior change: Deserializing a database array into a tuple or
      tuple struct now returns a decoding error when the lengths do not
      match. Previously the mismatch was silently ignored.
    • Fixed: A corrupt data pointer that would underflow during resolution
      now returns an InvalidDatabase error instead of panicking.
    Open source →
    Release notes
    • Performance improvement: Faster search-tree traversal by dispatching on the database's record size to monomorphized node readers, replacing per-step branching on the record size.
    • Performance improvement: Direct deserialization of scalars, sequences, maps, and structs through dedicated fast paths instead of routing through deserialize_any.
    • Performance improvement: IPv4 and IPv6 lookups dispatch to dedicated paths, avoiding per-call address-kind checks on the hot path.
    • Behavior change: Deserializing a database array into a tuple or tuple struct now returns a decoding error when the lengths do not match. Previously the mismatch was silently ignored.
    • Fixed: A corrupt data pointer that would underflow during resolution now returns an InvalidDatabase error instead of panicking.
    Open source →
  5. 0.27.3 16 Feb 2026
    Release notes
    • Removed the release_max_level_info feature from the log dependency, as
      libraries should not set a global release log-level cap. Pull request by
      monosans. GitHub #110.
    Open source →
    Release notes
    • Removed the release_max_level_info feature from the log dependency, as libraries should not set a global release log-level cap. Pull request by monosans. GitHub #110.
    Open source →
  6. 0.27.2 14 Feb 2026
    Release notes
    • Performance improvement: Faster lookups and record decoding in common paths,
      including control-byte header parsing and integer decoding.
    • Performance improvement: Faster string decoding for ASCII-only values by
      using a dedicated ASCII fast path.
    • Performance improvement: Reduced release-build overhead by compiling out
      debug/trace logging calls.
    • Fixed: Truncated or corrupt data in control-byte headers now returns a
      decoding error instead of panicking.
    Open source →
    Release notes
    • Performance improvement: Faster lookups and record decoding in common paths, including control-byte header parsing and integer decoding.
    • Performance improvement: Faster string decoding for ASCII-only values by using a dedicated ASCII fast path.
    • Performance improvement: Reduced release-build overhead by compiling out debug/trace logging calls.
    • Fixed: Truncated or corrupt data in control-byte headers now returns a decoding error instead of panicking.
    Open source →
  7. 0.27.1 18 Dec 2025
    Release notes
    • Performance improvement: Skipped UTF-8 validation for map keys during
      deserialization. This significantly speeds up full record decoding by
      treating keys as raw bytes when matching against struct fields.
    • Performance improvement: Optimized tree traversal by reducing bounds checks
      during node reading.
    Open source →
    Release notes
    • Performance improvement: Skipped UTF-8 validation for map keys during deserialization. This significantly speeds up full record decoding by treating keys as raw bytes when matching against struct fields.
    • Performance improvement: Optimized tree traversal by reducing bounds checks during node reading.
    Open source →
  8. 0.27.0 28 Nov 2025
    Release notes

    This release includes significant API changes. See UPGRADING.md
    for migration guidance.

    Breaking Changes

    Lookup API

    • lookup() now returns LookupResult instead of Option<T>. The new API
      enables lazy decoding - data is only deserialized when explicitly requested.
    • lookup_prefix() has been removed. Use lookup(ip)?.network() instead.

    Iteration API

    • within() now requires a second WithinOptions parameter. Use
      Default::default() for the previous behavior.
    • Within iterator now yields LookupResult instead of WithinItem<T>.

    GeoIP2 Structs

    • The names fields now use a Names struct instead of BTreeMap<&str, &str>.
      Access names directly via language fields (e.g., names.english).
    • Nested struct fields (city, country, location, etc.) are now
      non-optional with Default, simplifying access patterns.
    • Removed is_anonymous_proxy and is_satellite_provider from Traits.
      These fields are no longer present in MaxMind databases.

    Error Types

    • InvalidDatabase and Decoding variants now use structured fields instead
      of a single string. Pattern matching must be updated.
    • New InvalidInput variant for user input errors (e.g., IPv6 lookup in
      IPv4-only database).

    Memory Mapping

    • Reader::open_mmap is now unsafe. The caller must ensure the database
      file is not modified or truncated while the Reader exists. This fixes a
      soundness issue. Reported by paolobarbolini. GitHub #86.

    Added

    • LookupResult type with lazy decoding support:
      • has_data() - Check if data exists for this IP
      • network() - Get the network containing the IP
      • offset() - Get data offset for caching/deduplication
      • decode() - Deserialize full record
      • decode_path() - Selectively decode specific fields by path
    • PathElement enum and path! macro for navigating nested structures.
    • WithinOptions to control network iteration behavior:
      • include_aliased_networks() - Include IPv4 via IPv6 aliases
      • include_networks_without_data() - Include networks without data records
      • skip_empty_values() - Skip empty maps/arrays
    • networks() method for iterating over all networks in the database.
    • verify() method for comprehensive database validation.
    • Metadata::build_time() to convert build_epoch to SystemTime.
    • PartialEq and Eq implementations for Metadata and WithinOptions.

    Changed

    • Error messages now include byte offsets when available.
    • decode_path() errors include path context showing where navigation failed.
    • Added recursion depth limit (512) matching libmaxminddb and Go reader.
    • Serde deserializer improvements: size hints, is_human_readable() returns
      false, deserialize_ignored_any, and deserialize_enum support.
    • MaxMindDbError is now #[non_exhaustive].
    Open source →
    Release notes

    This release includes significant API changes. See UPGRADING.md for migration guidance.

    Breaking Changes

    Lookup API

    • lookup() now returns LookupResult instead of Option<T>. The new API enables lazy decoding - data is only deserialized when explicitly requested.
    • lookup_prefix() has been removed. Use lookup(ip)?.network() instead.

    Iteration API

    • within() now requires a second WithinOptions parameter. Use Default::default() for the previous behavior.
    • Within iterator now yields LookupResult instead of WithinItem<T>.

    GeoIP2 Structs

    • The names fields now use a Names struct instead of BTreeMap<&str, &str>. Access names directly via language fields (e.g., names.english).
    • Nested struct fields (city, country, location, etc.) are now non-optional with Default, simplifying access patterns.
    • Removed is_anonymous_proxy and is_satellite_provider from Traits. These fields are no longer present in MaxMind databases.

    Error Types

    • InvalidDatabase and Decoding variants now use structured fields instead of a single string. Pattern matching must be updated.
    • New InvalidInput variant for user input errors (e.g., IPv6 lookup in IPv4-only database).

    Memory Mapping

    • Reader::open_mmap is now unsafe. The caller must ensure the database file is not modified or truncated while the Reader exists. This fixes a soundness issue. Reported by paolobarbolini. GitHub #86.

    Added

    • LookupResult type with lazy decoding support:
      • has_data() - Check if data exists for this IP
      • network() - Get the network containing the IP
      • offset() - Get data offset for caching/deduplication
      • decode() - Deserialize full record
      • decode_path() - Selectively decode specific fields by path
    • PathElement enum and path! macro for navigating nested structures.
    • WithinOptions to control network iteration behavior:
      • include_aliased_networks() - Include IPv4 via IPv6 aliases
      • include_networks_without_data() - Include networks without data records
      • skip_empty_values() - Skip empty maps/arrays
    • networks() method for iterating over all networks in the database.
    • verify() method for comprehensive database validation.
    • Metadata::build_time() to convert build_epoch to SystemTime.
    • PartialEq and Eq implementations for Metadata and WithinOptions.

    Changed

    • Error messages now include byte offsets when available.
    • decode_path() errors include path context showing where navigation failed.
    • Added recursion depth limit (512) matching libmaxminddb and Go reader.
    • Serde deserializer improvements: size hints, is_human_readable() returns false, deserialize_ignored_any, and deserialize_enum support.
    • MaxMindDbError is now #[non_exhaustive].
    Open source →
  9. 0.26.0 28 Mar 2025
    Release notes
    • BREAKING CHANGE: The lookup and lookup_prefix methods now return
      Ok(None) or Ok((None, prefix_len)) respectively when an IP address is
      valid but not found in the database (or has no associated data record),
      instead of returning an Err(MaxMindDbError::AddressNotFoundError).
      Code previously matching on AddressNotFoundError must be updated to
      handle the Ok(None) / Ok((None, prefix_len)) variants.
    • BREAKING CHANGE: The MaxMindDBError enum has been renamed
      MaxMindDbError and variants have been renamed and refactored. For
      example, IoError is now Io, InvalidDatabaseError is now
      InvalidDatabase, DecodingError is now Decoding,
      InvalidNetworkError is now InvalidNetwork. The MapError variant has
      been replaced by Mmap (under the mmap feature flag). Code explicitly
      matching on the old variant names must be updated.
    • BREAKING CHANGE: MaxMindDbError no longer implements PartialEq.
      This is because underlying error types like std::io::Error (now
      wrapped by the Io and Mmap variants) do not implement PartialEq.
      Code comparing errors directly using == or assert_eq! must be
      updated, typically by using matches! or by matching on the error
      kind and potentially its contents.
    • Refactored MaxMindDbError handling using the thiserror crate.
      Variants like Io, Mmap, and InvalidNetwork now directly wrap
      the underlying error types (std::io::Error, ipnetwork::IpNetworkError).
    • Errors wrapping underlying types (Io, Mmap, InvalidNetwork) now
      correctly implement std::error::Error::source(), allowing inspection
      of the original cause.
    • The Display implementation for MaxMindDbError has been refined to
      generally show only the specific error details, often including the
      message from the source error, rather than prefixing with the variant
      name.
    • lookup_prefix now returns the prefix length of the entry even when the
      value is not found.
    • Fixed an internal bounds checking error when resolving data pointers.
      The previous logic could cause a panic on a corrupt database.
    Open source →
    Release notes
    • BREAKING CHANGE: The lookup and lookup_prefix methods now return Ok(None) or Ok((None, prefix_len)) respectively when an IP address is valid but not found in the database (or has no associated data record), instead of returning an Err(MaxMindDbError::AddressNotFoundError). Code previously matching on AddressNotFoundError must be updated to handle the Ok(None) / Ok((None, prefix_len)) variants.
    • BREAKING CHANGE: The MaxMindDBError enum has been renamed MaxMindDbError and variants have been renamed and refactored. For example, IoError is now Io, InvalidDatabaseError is now InvalidDatabase, DecodingError is now Decoding, InvalidNetworkError is now InvalidNetwork. The MapError variant has been replaced by Mmap (under the mmap feature flag). Code explicitly matching on the old variant names must be updated.
    • BREAKING CHANGE: MaxMindDbError no longer implements PartialEq. This is because underlying error types like std::io::Error (now wrapped by the Io and Mmap variants) do not implement PartialEq. Code comparing errors directly using == or assert_eq! must be updated, typically by using matches! or by matching on the error kind and potentially its contents.
    • Refactored MaxMindDbError handling using the thiserror crate. Variants like Io, Mmap, and InvalidNetwork now directly wrap the underlying error types (std::io::Error, ipnetwork::IpNetworkError).
    • Errors wrapping underlying types (Io, Mmap, InvalidNetwork) now correctly implement std::error::Error::source(), allowing inspection of the original cause.
    • The Display implementation for MaxMindDbError has been refined to generally show only the specific error details, often including the message from the source error, rather than prefixing with the variant name.
    • lookup_prefix now returns the prefix length of the entry even when the value is not found.
    • Fixed an internal bounds checking error when resolving data pointers. The previous logic could cause a panic on a corrupt database.
    Open source →
  10. 0.25.0 16 Feb 2025
    Release notes
    • Serde will now skip serialization of the GeoIP2 struct fields
      when Option is none. Pull request by Stefan Sundin. GitHub #79.
    • Serialize and Clone were added to the Metadata struct. Pull
      request by Stefan Sundin. GitHub #80.
    • Added feature to use simdutf8 as a faster alternative when
      unsafe-str-decode is too risky. Pull request by Jakub Onderka.
      GitHub #88.
    • Minor internal refactoring and performance improvements.
    Open source →
    Release notes
    • Serde will now skip serialization of the GeoIP2 struct fields when Option is none. Pull request by Stefan Sundin. GitHub #79.
    • Serialize and Clone were added to the Metadata struct. Pull request by Stefan Sundin. GitHub #80.
    • Added feature to use simdutf8 as a faster alternative when unsafe-str-decode is too risky. Pull request by Jakub Onderka. GitHub #88.
    • Minor internal refactoring and performance improvements.
    Open source →
  11. 0.24.0 10 Jan 2024
    Release notes
    • Added the is_anycast field to the Traits struct. Pull request by Skye. GitHub #73.
    Open source →
  12. 0.23.0 03 Apr 2022
    Release notes
    • Added lookup_prefix to return the prefix length for the network associated with the IP address. Pull request by Marek Vavruša. GitHub #26.
    Open source →
  13. 0.22.0 23 Mar 2022
    Release notes
    • A within method has been added to the reader to allow iterating over all records in the database. Pull request by Ross McFarland. Github #50.
    • Database structs in maxminddb::geoip2 have been updated. Most noticeably, an Enterprise struct has been added and the model module has been replaced by city and country modules. Also, several missing fields have been added.
    • Mmap is now re-exported for convenience. Pull request by zhuhaow. GitHub #54.
    • Upgraded memmap2 dependency.
    Open source →
  14. 0.21.0 20 Jul 2021
    Release notes
    • Reduce the amount of code generated by shrinking generic methods. Pull request by Markus Westerlind. GitHub #49.
    Open source →
  15. 0.20.0 11 Jul 2021
    Release notes
    • Use try_into when decoding floating point values. Pull request by Sebastian Mayr. GitHub #47.
    Open source →
  16. 0.19.0 25 Jun 2021
    Release notes
    • Switch from memmap to memmap2. Pull request by Gleb Pomykalov. GitHub #46.
    Open source →
  17. 0.18.0 29 May 2021
    Release notes
    • The memchr crate is now used to improve the performance of finding the metadata start. Pull request by Markus Westerlind. GitHub #44.
    Open source →
  18. 0.17.3 29 May 2021
    Release notes
    • Correct handling of pointers in the database metadata section. This bug caused the latest GeoIP2 ISP database from MaxMind to fail to load with an InvalidDatabaseError due to an invalid data type. Reported by Marwes-Imperva. GitHub #45.
    Open source →
  19. 0.17.2 12 Feb 2021
    Release notes
    • Minor cleanup.
    Open source →
  20. 0.17.1 04 Jan 2021
    Release notes
    • Restore compatibility with targets that don't support 128-bit integers. Pull request by Filip. GitHub #41.
    Open source →
  21. 0.17.0 12 Dec 2020
    Release notes
    • Unsigned 128-bit integers are now decoded to a u128 rather than a [u8]. Pull request by moschroe. GitHub #40.
    Open source →
  22. 0.16.0 05 Dec 2020
    Release notes
    • This release includes major performance improvements and code cleanup. Pull request by Sebastian Mayr. GitHub #37.
    Open source →
  23. 0.15.0 10 Oct 2020
    Release notes
    • Remove crate options leftover from before Rust 1.0. In particular, this crate no longer specifies crate_type. This should allow you to compile it with panic = "abort". Reported by ye2020. GitHub #33.
    Open source →
  24. 0.14.0 07 Jun 2020
    Release notes
    • BREAKING CHANGE: All Strings in the geoip2 structs are not returned as references. This was done to provide a significant performance improvement when ownership is not needed. Pull request by Matthew Wynn. GitHub #31.
    • A new opt-in feature, unsafe-str-decode, has been added that will skip UTF-8 validation when decoding strings. You should only use this when you trust that the MaxMind DB is valid and contains valid UTF-8 strings. This provides a modest performance improvement. Pull request by Matthew Wynn. GitHub #31.
    • Many other internal improvements to reduce the number of allocations.
    Open source →
  25. 0.13.0 21 Jan 2019
    Release notes
    • Missing models for DensityIncome, Domain, and Asn were added and the missing is_in_european_union field was added to the Country model. Pull request by Sebastian Nadorp. GitHub #19.
    • More details are now included in the Display implementation for MaxMindDBError. Pull request by Mike Cooper. GitHub #20.
    Open source →
  26. 0.12.0 09 Dec 2018
    Release notes
    • Reader::open has been removed. You should use Reader::open_readfile or Reader::open_mmap. Pull request by kpcyrd. GitHub #17 & #18.
    • Reader::open_readfile no longer depends on unsafe. Pull request by kpcyrd. GitHub #17 & #18.
    Open source →
  27. 0.11.0 13 Nov 2018
    Release notes
    • An optional mmap cfg feature flag has been added. When set, open will use the memmap crate to memory map the database file rather than reading it from file. In addition to open, open_readfile and open_mmap are available. PR by moschroe. GitHub #16.
    • Reader::open now takes an AsRef<Path>. Also, #16.
    • Reader::from_buf allows using an existing buffer instead of specifying a database file. PR by kpcyrd. GitHub #15.
    Open source →
  28. 0.10.0 08 Aug 2018
    Release notes
    • Derive Serialize for GeoIP2 models. Pull request by Bryan Gilbert. GitHub #11.
    Open source →
  29. 0.9.0 17 Feb 2018
    Release notes
    • Update logger to 0.4 and env_logger to 0.5.
    Open source →
  30. 0.8.1 02 Jul 2017
    Release notes
    • Implement unimplemented deserialize methods.
    Open source →
  31. 0.8.0 29 Jun 2017
    Release notes
    • API CHANGE: Switch to Serde for deserialization. Data structures being deserialized to must implement the Deserialize trait. Pull request by Wesley Moore. GitHub #5.
    Open source →
  32. 0.7.2 16 Apr 2017
    Release notes
    • Update log to 0.3.7 and rustc-serialize to 0.3.23.
    Open source →
  33. 0.7.1 14 Nov 2016
    Release notes
    • Update rustc-serialize to 0.3.21.
    Open source →
  34. 0.7.0 15 May 2016
    Release notes
    • API CHANGE: lookup takes an IpAddr again instead of a SocketAddr. We previously switched to SocketAddr after IpAddr had been deprecated, but it has since been re-added.
    Open source →
  35. 0.6.2 24 Jan 2016

    Nothing published for this version

  36. 0.6.1 11 Dec 2015

    Nothing published for this version

  37. 0.6.0 26 Oct 2015

    Nothing published for this version

  38. 0.5.5 05 Sep 2015

    Nothing published for this version

  39. 0.5.4 09 Aug 2015

    Nothing published for this version

  40. 0.5.3 20 May 2015

    Nothing published for this version

  41. 0.5.2 16 May 2015

    Nothing published for this version

  42. 0.5.1 20 Apr 2015

    Nothing published for this version

  43. 0.5.0 19 Apr 2015

    Nothing published for this version

  44. 0.4.0 19 Apr 2015

    Nothing published for this version

  45. 0.3.0 04 Apr 2015

    Nothing published for this version

  46. 0.2.1 27 Mar 2015

    Nothing published for this version

  47. 0.2.0 24 Mar 2015

    Nothing published for this version

  48. 0.1.9 21 Mar 2015

    Nothing published for this version

  49. 0.1.8 28 Feb 2015

    Nothing published for this version

  50. 0.1.7 22 Feb 2015

    Nothing published for this version

  51. 0.1.6 14 Feb 2015

    Nothing published for this version

  52. 0.1.5 31 Jan 2015

    Nothing published for this version

  53. 0.1.4 24 Jan 2015

    Nothing published for this version

  54. 0.1.3 10 Jan 2015

    Nothing published for this version

  55. 0.1.2 04 Jan 2015

    Nothing published for this version

  56. 0.1.1 26 Dec 2014

    Nothing published for this version

  57. 0.1.0 22 Nov 2014

    Nothing published for this version

  58. 0.1.0-pre 22 Nov 2014 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive