Skip to content

Releases: elixir-explorer/explorer

v0.8.2

22 Apr 12:34
990d4e5
Compare
Choose a tag to compare

Added

  • Add functions to work with strings and regexes.

    Some of the functions have the prefix "re_", because they accept a string that represents a regular expression.

    There is an important detail: we do not accept Elixir regexes, because we cannot guarantee that the backend supports it. Instead we accept a plain string that is "escaped". This means that you can use the ~S sigil to build that string.
    Example: ~S/(a|b)/.

    The added functions are the following:

    • Explorer.Series.split_into/3 - split a string series into a struct of string fields. This function accepts a string as a separator.

    • Explorer.Series.re_contains/2 - check is the string series matches the regex pattern. Like the "non regex" counterpart, it returns a boolean series.

    • Explorer.Series.re_replace/3 - replaces all occurences of a pattern with replacement in string series. The replacement can refer to groups captures by using the ${x}, where x is the group index (starts with 1) or name.

    • Explorer.Series.count_matches/2 - count how many times a substring appears in a string series.

    • Explorer.Series.re_count_matches/2 - count how many times a pattern matches in a string series.

    • Explorer.Series.re_scan/2 - scan for all matches for the given regex pattern.
      This is going to result in a series of lists of strings - {:list, :string}.

    • Explorer.Series.re_named_captures/2 - extract all capture groups as a struct for the given regex pattern. In case the groups are not named, their positions are used as names.

  • Enable the usage of system certificates if OTP version 25 or above.

  • Add support for the :streaming option in Explorer.DataFrame.to_csv/3.

  • Support operations with groups in the Lazy Polars backend. This change makes the lazy frame implementation more useful, by supporting the usage of groups in following functions:

    • Explorer.DataFrame.slice/3

    • Explorer.DataFrame.head/2

    • Explorer.DataFrame.tail/2

    • Explorer.DataFrame.filter_with/2 and the macro version of it, filter/2.

    • Explorer.DataFrame.sort_with/3, although it ignores "maintain order" and "nulls last" options when used with groups.

    • Explorer.DataFrame.mutate_with/2 and its macro version, mutate/2.

Changed

  • We now avoid raising an exception if a non existent column is used in Explorer.DataFrame.discard/2.

  • Make the dependency of cacerts optional. This is because people using Erlang/OTP 25 or above can use the certificates provided by the system.
    So you may need to add the dependency of cacerts if your OTP version is older than that.

  • Some precision differences in float operations may appear. This is due to an update in the Polars version to "v0.38.1". Polars is our default backend.

Fixed

  • Fix Explorer.Series.split/2 inside the context of Explorer.Query.

  • Add optional X-Amz-Security-Token header to S3 request. This is needed in case the user is passing down a token for authentication.

  • Fix Explorer.DataFrame.sort_by/3 with groups to respect :nils option.
    This is considering only the eager implementation.

  • Fix inspection of lazy frames in remote nodes.

Pull requests

  • Bump Polars 0.37 by @lkarthee in #861
  • DataFrame.discard/2 - don't raise for non existent column by @lkarthee in #872
  • Add native expression for Series.split/2 by @H12 in #875
  • Bump mio from 0.8.10 to 0.8.11 in /native/explorer by @dependabot in #876
  • Implements Series.split_into/3 by @ryancurtin in #873
  • Update Polars to v0.38 by @philss in #879
  • Add optional x-amz-security-token header to S3 request by @jschniper in #881
  • Rewrite LazyFrame by @philss in #882
  • Update Rustler to v0.32.1 by @philss in #884
  • Fix DF.sort_by/3 with groups to respect :nils option by @philss in #886
  • Update Polars to v0.38.3 by @philss in #887
  • Implements :streaming option for DataFrame.to_csv/3 by @ryancurtin in #889
  • Support operations with groups in the Lazy Polars backend by @philss in #890
  • Bump h2 from 0.3.25 to 0.3.26 in /native/explorer by @dependabot in #891
  • Revert LazyFrame implementation with stack by @philss in #892
  • Refactor eager DF implementation to make use of lazy backend by @philss in #893
  • Add re_contains/2 and re_replace/3 to match with a regex by @philss in #894
  • Add count_matches/2, re_count_matches/2, re_scan/2 and re_named_captures/2 to Series by @philss in #895
  • Add changes to the change log for the upcoming version by @philss in #897
  • Update dependencies by @philss in #899
  • Pass down backend to lazy series and enable re_named_captures/2 usage by @philss in #896
  • Release v0.8.2 by @philss in #900

New Contributors

SHA 256 of Artifacts

fd4d7db73577544d1008827502461fbc82644b44879bf4d50b8c7c2f7a04ad1f  explorer-v0.8.2-nif-2.15-x86_64-pc-windows-gnu--legacy_cpu.dll.tar.gz
ba9f6afe86d37e52b7481a29e6011cdc834b2c0196ee6b4235497c4a405fe6e3  explorer-v0.8.2-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
447e3150ebffa1712ed7b6d56e11dd2369126a92bf5466570e4f36ae46f200b9  explorer-v0.8.2-nif-2.15-x86_64-pc-windows-msvc--legacy_cpu.dll.tar.gz
2032955e04c6632fd4d6d1015f611b7b90a84a405710d49cce46b7b1e1f52b3d  explorer-v0.8.2-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
9f10c1b25846de37ca2caf271c7728716d5d6783c82e823783ced53cc6a0b4b0  libexplorer-v0.8.2-nif-2.15-aarch64-apple-darwin.so.tar.gz
aceade08eab94230b8f9dc87a5850e5523a7cf7a4222495bf3fa012c4622cd54  libexplorer-v0.8.2-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
0f0341d8a0928554ea2c083a653e599fdd406a0675bfc8e615465e6461726508  libexplorer-v0.8.2-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
63f9ffda8f9dbcacb12a3a522adbde370b78579a23a75183321fb0fa81f0a596  libexplorer-v0.8.2-nif-2.15-x86_64-apple-darwin.so.tar.gz
65793e232a26a91bcfb90867f6392e34228d8f3f23419f500bee47f08c3e8896  libexplorer-v0.8.2-nif-2.15-x86_64-unknown-freebsd--legacy_cpu.so.tar.gz
3b4d5b1d88cfe416a13e3f0f1fdc87dd54dbf78dff7ff40cb1f64aa7652d5b8a  libexplorer-v0.8.2-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
3afb057bfecdf86199a9dc380be2f44c44f09ac428d806e7983232ba6f15601b  libexplorer-v0.8.2-nif-2.15-x86_64-unknown-linux-gnu--legacy_cpu.so.tar.gz
cfab4552f1f3791e38c6b6ce3d5099fbe88f686ec062ac181ef2b35f3432c1e3  libexplorer-v0.8.2-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
7fa4961f08f9278f6b8585d2b4f89d5712ccf222de7a41edb054915d8ec7d50c  libexplorer-v0.8.2-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz

Full Changelog: v0.8.1...v0.8.2

v0.8.1

24 Feb 21:29
bfdf07b
Compare
Choose a tag to compare

Added

  • Add Explorer.Series.field/2 to extract a field from a struct series.
    It returns a new series with the field's dtype.

  • Add Explorer.Series.json_decode/2 that can decode a string series containing valid JSON objects according to dtype.

  • Add eager count/1 and lazy size/1 to Explorer.Series.

  • Add support for maps as expressions inside Explorer.Query. They are "converted" to structs.

  • Add json_path_match/2 to extract a string series from a string containing valid JSON objects.
    See the article JSONPath - XPath for JSON for details about JSON paths.

  • Add Explorer.Series.row_index/1 to retrieve the index of rows starting from 0.

  • Add support for passing the :on column directly (instead of inside a list) in Explorer.DataFrame.join/3.

Changed

  • Remove some deprecated functions from documentation.

  • Change internal representation of the :struct dtype to use list of tuples instead of a map to represent the dtypes of each field. This shouldn't break because we normalise maps to lists when a struct dtype is passed in from_list/2 or cast/2.

  • Update Rustler minimum version to ~> 0.31. Since Rustler is optional, this shouldn't affect most of the users.

Fixed

  • Fix float overflow error to avoid crashing the VM, and instead it returns an argument error.

  • Fix Explorer.DataFrame.print/2 for when the DF contains structs.

Pull requests

New Contributors

Full Changelog: v0.8.0...v0.8.1
Official Changelog: https://hexdocs.pm/explorer/changelog.html

SHA256 of precompiled artifacts

ce4b06cf51f6213b4e1917e52f73c8a09ef57c5cf5e157409122cdd348d00ee3  explorer-v0.8.1-nif-2.15-x86_64-pc-windows-gnu--legacy_cpu.dll.tar.gz
b78fb84a8847b17dd857213c9aea69622dff0b6b00233f395e9aaf2e3ee9a923  explorer-v0.8.1-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
481204194b180b5dd4207cc00909f192a3e8f094f08b8be58bbc5e9e058150cd  explorer-v0.8.1-nif-2.15-x86_64-pc-windows-msvc--legacy_cpu.dll.tar.gz
f1a77c0f378582e300f17a85fe391eea6bdd673839fdd52d9bc5988906ba6171  explorer-v0.8.1-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
86aec9dd29572a61cd064108b02360161bff3e93e109ec0eb6c3e516cd08a6b4  libexplorer-v0.8.1-nif-2.15-aarch64-apple-darwin.so.tar.gz
a10f4ea3c7c1135b15e4a15186f926eed9c18376d4168442156e7ab9d9678408  libexplorer-v0.8.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
ac338d49cc96bdd8646c2e98e4eba877a352d02f84b956055d814dc66b884e1f  libexplorer-v0.8.1-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
ffc4d30c9c6802e5be5429b687f599fa4ca7875178468e880a5a6b2bc7f83663  libexplorer-v0.8.1-nif-2.15-x86_64-apple-darwin.so.tar.gz
e7bd3c239fd11db43f5fa822a5d25ce3c1a4569e33b155cdf341dfc20e5488c1  libexplorer-v0.8.1-nif-2.15-x86_64-unknown-freebsd--legacy_cpu.so.tar.gz
dba1128914e97a0edca3d0618ef6617a3eed284fbe6ee9d052b95c674e6eac14  libexplorer-v0.8.1-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
90b8960ce6d57b48002a1ddffaab950a746de24f7c45eab7c89d65a075edeb9d  libexplorer-v0.8.1-nif-2.15-x86_64-unknown-linux-gnu--legacy_cpu.so.tar.gz
9480ab502d28b7540cf598115c6aadc6a2d1c61eaaa82ffa60fc2e530b0f1e91  libexplorer-v0.8.1-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
c5ffa7c27f6dc44ec31be9eed3d09ff1f3fa9ce4727342af8607160b48d6b686  libexplorer-v0.8.1-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz

v0.8.0

20 Jan 17:43
e0e242b
Compare
Choose a tag to compare

Added

  • Add explode/2 to Explorer.DataFrame. This function is useful to expand the contents of a {:list, inner_dtype} series into a "inner_dtype" series.

  • Add the new series functions all?/1 and any?/1, to work with boolean series.

  • Add support for the "struct" dtype. This new dtype represents the struct dtype from Polars/Arrow.

  • Add map/2 and map_with/2 to the Explorer.Series module.
    This change enables the usage of the Explore.Query features in a series.

  • Add sort_by/2 and sort_with/2 to the Explorer.Series module.
    This change enables the usage of the lazy computations and the Explorer.Query module.

  • Add unnest/2 to Explorer.DataFrame. It works by taking the fields of a "struct" - the new dtype - and transform them into columns.

  • Add pairwise correlation - Explorer.DataFrame.correlation/2 - to calculate the correlation between numeric columns inside a data frame.

  • Add pairwise covariance - Explorer.DataFrame.covariance/2 - to calculate the covariance between numeric columns inside a data frame.

  • Add support for more integer dtypes. This change introduces new signed and unsigned integer dtypes:

    • {:s, 8}, {:s, 16}, {:s, 32}
    • {:u, 8}, {:u, 16}, {:u, 32}, {:u, 64}.

    The existing :integer dtype is now represented as {:s, 64}, and it's still the default dtype for integers. But series and data frames can now work with the new dtypes. Short names for these new dtypes can be used in functions like Explorer.Series.from_list/2. For example, {:u, 32} can be represented with the atom :u32.

    This may bring more interoperability with Nx, and with Arrow related things, like ADBC and Parquet.

  • Add ewm_standard_deviation/2 and ewm_variance/2 to Explorer.Series.
    They calculate the "exponentially weighted moving" variance and standard deviation.

  • Add support for :skip_rows_after_header option for the CSV reader functions.

  • Support {:list, numeric_dtype} for Explorer.Series.frequencies/1.

  • Support pins in cond, inside the context of Explorer.Query.

  • Introduce the :null dtype. This is a special dtype from Polars and Apache Arrow to represent "all null" series.

  • Add Explorer.DataFrame.transpose/2 to transpose a data frame.

Changed

  • Rename the functions related to sorting/arranging of the Explorer.DataFrame.
    Now arrange_with is named sort_with, and arrange is sort_by.

    The sort_by/3 is a macro and it is going to work using the Explorer.Query module. On the other side, the sort_with/2 uses a callback function.

  • Remove unnecessary casts to {:s, 64} now that we support more integer dtypes.
    It affects some functions, like the following in the Explorer.Series module:

    • argsort
    • count
    • rank
    • day_of_week, day_of_year, week_of_year, month, year, hour, minute, second
    • abs
    • clip
    • lengths
    • slice
    • n_distinct
    • frequencies

    And also some functions from the Explorer.DataFrame module:

    • mutate - mostly because of series changes
    • summarise - mostly because of series changes
    • slice

Fixed

  • Fix inspection of series and data frames between nodes.

  • Fix cast of :string series to {:datetime, any()}

  • Fix mismatched types in Explorer.Series.pow/2, making it more consistent.

  • Normalize sorting options.

  • Fix functions with dtype mismatching the result from Polars.
    This fix is affecting the following functions:

    • quantile/2 in the context of a lazy series
    • mode/1 inside a summarisation
    • strftime/2 in the context of a lazy series
    • mutate_with/2 when creating a column from a NaiveDateTime or Explorer.Duration.

Pull requests

New Contributors

Read more

v0.7.2

30 Nov 20:21
e585012
Compare
Choose a tag to compare

Added

  • Add the functions day_of_year/1 and week_of_year/1 to Explorer.Series.

  • Add filter/2 - a macro -, and filter_with/2 to Explorer.Series.

    This change enables the usage of queries - using Explorer.Query - when
    filtering a series. The main difference is that series does not have a
    name when used outside a dataframe. So to refer to itself inside the
    query, we can use the special _ variable.

      iex> s = Explorer.Series.from_list([1, 2, 3])
      iex> Explorer.Series.filter(s, _ > 2)
      #Explorer.Series<
        Polars[1]
        integer [3]
      >
    
  • Add support for the {:list, any()} dtype, where any() can be any other
    valid dtype. This is a recursive dtype, that can represent nested lists.
    It's useful to group data together in the same series.

  • Add Explorer.Series.mode/2 to get the most common value(s) of the series.

  • Add split/2 and join/2 to the Explorer.Series module.
    These functions are useful to split string series into {:list, :string},
    or to join parts of a {:list, :string} and return a :string series.

  • Expose ddof option for variance, covariance and standard deviation.

  • Add a new {:f, 32} dtype to represent 32 bits float series.
    It's also possible to use the atom :f32 to create this type of series.
    The atom :f64 can be used as an alias for {:f, 64}, just like the
    :float atom.

  • Add lengths/1 and member?/2 to Explorer.Series.
    These functions work with {:list, any()}, where any() is any valid dtype.
    The idea is to count the members of a "list" series, and check if a given
    value is member of a list series, respectively.

  • Add support for streaming parquet files from a lazy dataframe to AWS S3
    compatible services.

Changed

  • Remove restriction on pivot_wider dtypes.
    In the early days, Polars only supported numeric dtypes for the "first"
    aggregation. This is not true anymore, and we can lift this restriction.

  • Change :float dtype to be represented as {:f, 64}. It's still possible
    to use the atom :float to create float series, but now Explorer.Series.dtype/1
    returns {:f, 64} for float 64 bits series.

Fixed

  • Add missing implementation of Explorer.Series.replace/3 for lazy series.

  • Fix inspection of DFs and series when limit: :infinity is used.

Removed

  • Drop support for the riscv64gc-unknown-linux-gnu target.

    We decided to stop precompiling to this target because it's been hard to maintain it.
    Ideally we should support it again in the future.

Pull requests

New Contributors

Full Changelog: v0.7.1...v0.7.2
Official Changelog: https://github.com/elixir-explorer/explorer/blob/main/CHANGELOG.md

Checksums

The list below if the SHA256 checksums of the precompiled artifacts.

363e9c8ecd92f2d7ff19cc977ab8fafbed8f5b5f4a9c483d98bb7441b469c5c2  explorer-v0.7.2-nif-2.15-x86_64-pc-windows-gnu--legacy_cpu.dll.tar.gz
abb960b51f56e76d594554c1f7cd082de195a64a04f5795c75ced6126c4b66a5  explorer-v0.7.2-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
d9c5e084f22dc2fc3a4ef808e840c192109e4cd919054f0111f7f1e4f52b97b3  explorer-v0.7.2-nif-2.15-x86_64-pc-windows-msvc--legacy_cpu.dll.tar.gz
96a59887aff5e62b4838fb8d7189ac21b7a39bf6caae11985d8e2daea2d99f15  explorer-v0.7.2-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
d5e384c292fca48941cd5400cf900fa39117f9cc187bfbc1d252d3a72798cd07  libexplorer-v0.7.2-nif-2.15-aarch64-apple-darwin.so.tar.gz
52c4455faec0c12789ecf2fb287f89b4f8350728092fa9de39ca24d1203d3daa  libexplorer-v0.7.2-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
3524ebf3c73246eff8d3fb556786f30d063402cc212a83e3abaceae9f2ff86c5  libexplorer-v0.7.2-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
429ceebb5b7f465c66a6becc1e454ef7383fc58f6cfe081bf71fdd94eb55655b  libexplorer-v0.7.2-nif-2.15-x86_64-apple-darwin.so.tar.gz
029bb5fc6e102449260b706655428cd3ef02b36bd74246375e17897c1a26815d  libexplorer-v0.7.2-nif-2.15-x86_64-unknown-freebsd--legacy_cpu.so.tar.gz
d2075a364a23fc7911b3099716505d8d0df69af1aab944e527c169a96fa2ef58  libexplorer-v0.7.2-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
86b9e9b671c46cb90d0d4bf7b0f2998e59f8715d6f13fde29f8070ad756da648  libexplorer-v0.7.2-nif-2.15-x86_64-unknown-linux-gnu--legacy_cpu.so.tar.gz
fd4e095fafa0055619a49383bd8680abd6639e3d5fc114dd246e0192bcccb5e8  libexplorer-v0.7.2-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
ad3779850c36bf0ff3ca568124da8966cca25ce84912642dc13462cb9ca5a9dd  libexplorer-v0.7.2-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz

v0.7.1

25 Sep 16:28
96a108d
Compare
Choose a tag to compare

Added

  • Add more temporal arithmetic operations. This change makes possible
    to mix some datatypes, like date, duration and scalar types like
    integers and floats.

    The following operations are possible now:

    • date - date
    • date + duration
    • date - duration
    • duration + date
    • duration * integer
    • duration * float
    • duration / integer
    • duration / float
    • integer * duration
    • float * duration
  • Support lazy dataframes on Explorer.DataFrame.print/2.

  • Add support for strings as the "indexes" of Explorer.Series.categorise/2.
    This makes possible to categorise a string series with a categories series.

  • Introduce cond/1 support in queries, which enables multi-clause conditions.
    Example of usage:

        iex> df = DF.new(a: [10, 4, 6])
        iex> DF.mutate(df,
        ...>   b:
        ...>     cond do
        ...>       a > 9 -> "Exceptional"
        ...>       a > 5 -> "Passed"
        ...>       true -> "Failed"
        ...>     end
        ...> )
        #Explorer.DataFrame<
          Polars[3 x 2]
          a integer [10, 4, 6]
          b string ["Exceptional", "Failed", "Passed"]
        >
    
  • Similar to cond/1, this version also introduces support for the if/2
    and unless/2 macros inside queries.

  • Allow the usage of scalar booleans inside queries.

  • Add Explorer.Series.replace/3 for string series.
    This enables the replacement of patterns inside string series.

Deprecated

  • Deprecate Explorer.DataFrame.to_lazy/1 in favor of just lazy/1.

Fixed

  • Fix the Explorer.Series.in/2 function to work with series of the
    :category dtype.

    Now, if both series shares the same categories, we can compare them.
    To make sure that a categorical series shares the same categories from
    another series, you must create that series using the
    Explorer.Series.categorise/2 function.

  • Display the dtype of duration series correctly in Explorer.DataFrame.print/2.

Pull requests

New Contributors

Full Changelog: v0.7.0...v0.7.1
Official Changelog: https://github.com/elixir-explorer/explorer/blob/main/CHANGELOG.md

SHA256 of compiled artifacts

c723d2185d3d908004d1a88c4a565a2c339598ad61388265415a55a54e1f786a  explorer-v0.7.1-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
9d5a87706ab5334d13325f8c5ec753dddf700a46a78a42678f596663cc3b4aca  explorer-v0.7.1-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
e95fa8e787161aab1e3080c59a8fcb3b8e11e8346c4311a64126eb9acb869c5a  libexplorer-v0.7.1-nif-2.15-aarch64-apple-darwin.so.tar.gz
3a7d40cabee2f8036ef8bf2ed85b39479fe20d77bb05962f490c979e156671b1  libexplorer-v0.7.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
4481e50238cbe251ce5d5a89da50a8b6cb05d772098a9404a5067c605a8d49bb  libexplorer-v0.7.1-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
b4760dac6ab2d57f906957de0188bdff2b35595d8a095236f292119a61a85db1  libexplorer-v0.7.1-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz
b37e8ba2fe028dc1c34f54006f467b0493d38d52d2166f0438f29eb7d094b180  libexplorer-v0.7.1-nif-2.15-x86_64-apple-darwin.so.tar.gz
bab7426c2acd61604a793e950b55e8823077bfb6b3a609f3ee6025332170f87f  libexplorer-v0.7.1-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
b3e3c8092da7cbdaf0078f556f61f3e6c68ebfb04a2f3f284a99b99f57310024  libexplorer-v0.7.1-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
b0cfae969888be5a34079084c2a9b58c056578834526c3c8db41d33fec6a8407  libexplorer-v0.7.1-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz

v0.7.0

28 Aug 13:34
6ee60de
Compare
Choose a tag to compare

Added

  • Enable reads and writes of dataframes from/to external file systems.

    It supports HTTP(s) URLs or AWS S3 locations.

    This feature introduces the FSS abstraction,
    which is also going to be present in newer versions of Kino. This is going to make the integration
    of Livebook files with Explorer much easier.

    The implementation is done differently, depending on which file format is used, and if
    it's a read or write. All the writes to AWS S3 are done in the Rust side - using an abstraction
    called CloudWriter -, and most of the readers are implemented in Elixir, by doing a download
    of the files, and then loading the dataframe from it. The only exception is the reads of
    parquet files, which are done in Rust, using Polars' scan_parquet with streaming.

    We want to give a special thanks to Qqwy / Marten for the
    CloudWriter implementation!

  • Add ADBC: Arrow Database Connectivity.

    Continuing with improvements in the IO area, we added support for reading dataframes from
    databases using ADBC, which is similar in idea to ODBC, but integrates much better with
    Apache Arrow, that is the backbone of Polars - our backend today.

    The function Explorer.DataFrame.from_query/1 is the entrypoint for this feature, and it
    allows quering databases like PostgreSQL, SQLite and Snowflake.

    Check the Elixir ADBC bindings docs for more information.

    For the this feature, we had a fundamental contribution from Cocoa
    in the ADBC bindings, so we want to say a special thanks to her!

    We want to thank the people that joined José in his live streamings on Twitch,
    and helped to build this feature!

  • Add the following functions to Explorer.Series:

  • Add duration dtypes. This is adds the following dtypes:

    • {:duration, :nanosecond}
    • {:duration, :microsecond}
    • {:duration, :millisecond}

    This feature was a great contribution from Billy Lanchantin,
    and we want to thank him for this!

Changed

  • Return exception structs instead of strings for all IO operation errors, and for anything
    that returns an error from the NIF integration.

    This change makes easier to define which type of error we want to raise.

  • Update Polars to v0.32.

    With that we made some minor API changes, like changing some options for cut/qcut operations
    in the Explorer.Series module.

  • Use nil_values instead of null_character for IO operations.

  • Never expect nil for CSV IO dtypes.

  • Rename Explorer.DataFrame.table/2 to Explorer.DataFrame.print/2.

  • Change :datetime dtype to be {:datetime, time_unit}, where time unit can be
    the following:

    • :millisecond
    • :microsecond
    • :nanosecond
  • Rename the following Series functions:

    • trim/1 to strip/2
    • trim_leading/1 to lstrip/2
    • trim_trailing/1 to rstrip/2

    These functions now support a string argument.

Fixed

  • Fix warnings for the upcoming Elixir v1.16.

  • Fix Explorer.Series.abs/1 type specs.

  • Allow comparison of strings with categories.

  • Fix Explorer.Series.is_nan/1 inside the context of Explorer.Query.
    The NIF function was not being exported.

Pull requests

New Contributors

Full Diff: v0.6.1...v0.7.0
Changelog: https://github.com/elixir-explorer/explorer/blob/main/CHANGELOG.md

SHA256 checksums

a4629f950187fd20f4b0efa0164e8e9e20b5799312688e4ce7d82c46e28dfbaa  explorer-v0.7.0-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
9028f61dcde0e3d95ca886463d78cdaf0d749a319f0c721a11321947f86017d7  explorer-v0.7.0-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
5a244343ad99310267531c7848c9f261944064770e90748c22c0dd17fa12867a  libexplorer-v0.7.0-nif-2.15-aarch64-apple-darwin.so.tar.gz
a72dae3b58b11d73a47f3a92137b53494e52b1454c413e9ec3877d4eb7d9e406  libexplorer-v0.7.0-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
c87661de40d2447d90c7962dd61da98481f9cf9fa75a923e8699a216d0786a18  libexplorer-v0.7.0-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
0c5e602fb5e2680b916c07cb6615812e15e6f9fe28b361866341f8b4fd5cffe7  libexplorer-v0.7.0-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz
02f1638a7309133a72f8079560b06223ffd2d266dece3ddfe25ec0646ddfa23d  libexplorer-v0.7.0-nif-2.15-x86_64-apple-darwin.so.tar.gz
64bfae13b65e18b29a891820930ebbfac56abba01cf5b515b1fe11cf8019820b  libexplorer-v0.7.0-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
f0296c139c68fa818f61bbc37c5cf293a4fc09bbd4ccf1d942e8566e89146c51  libexplorer-v0.7.0-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
d2105e54fa5ab677b9b2e4313371108a9a2df355af659a73c486a55111fd29b4  libexplorer-v0.7.0-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz

v0.6.1

06 Jul 23:42
af224ed
Compare
Choose a tag to compare

Pull requests

  • Fix summarise for lazy frames without groups by @philss in #643

Full Changelog: v0.6.0...v0.6.1

SHA256 checksums

b729745ff7d1d8e1d924777ea1e241714772e744fe582c4a71cbe06cd6f66be5  explorer-v0.6.1-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
15b9741f5ea3a87c0f90e7ec01f388468698dd91ea4d99ada922e6023158116b  explorer-v0.6.1-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
fbf4560fe7a1ca50d12157d276f999de5ee751dd42ede63a4713599e17838e70  explorer-v0.6.1-nif-2.16-x86_64-pc-windows-gnu.dll.tar.gz
2b1d35ae26113b036fd6677f453eef0339f1fcee19b6576781d98fedcab66bb6  explorer-v0.6.1-nif-2.16-x86_64-pc-windows-msvc.dll.tar.gz
84e1d11769ae3b16d932fc172f2a22055aba801907d819d13e95e58b3792806c  libexplorer-v0.6.1-nif-2.15-aarch64-apple-darwin.so.tar.gz
7f9e43ef1cdd1552daa236b47323ac89b7885e4cd018eac011ad5e45ae926bac  libexplorer-v0.6.1-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
3437c18d1a05d5fefb90c8f0571f2d28614d6da231aa50fa3c13d9d5e53e6509  libexplorer-v0.6.1-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
6546adc4b5a7492cc8bccd030c5d8dec4adcca6453bf173e99ae4927e6d733c1  libexplorer-v0.6.1-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz
3b91670ecce69a448ee31b8702d6ca9e465a5385301bd6191f17c3ae11874e01  libexplorer-v0.6.1-nif-2.15-x86_64-apple-darwin.so.tar.gz
09308e02dbaa2c503adffc14559444519e09ac9497d1ac27500affc96deb4054  libexplorer-v0.6.1-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
d9d2b2d8954e252a5f6fb913fa00bd1d29692837f3a86d47bd281a234c71f865  libexplorer-v0.6.1-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
88d30f7cbf4e22f24bc2fad17ebcc081512167a8f3d54d4e44d9b779e203c8d4  libexplorer-v0.6.1-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz
efa5823abd23862769ca783dbbe9e09bc419f2654661b476c365e8ad8c0ee90d  libexplorer-v0.6.1-nif-2.16-aarch64-apple-darwin.so.tar.gz
486fa69c4433694757ea69bef6b575585b95534eb656cd82d4fd664a8229f06f  libexplorer-v0.6.1-nif-2.16-aarch64-unknown-linux-gnu.so.tar.gz
d6f0440232a1eb1cbb4bdd2b5d56c3232f2769d3f606286869d6f46986b711aa  libexplorer-v0.6.1-nif-2.16-aarch64-unknown-linux-musl.so.tar.gz
239c4b4c6f874f6d7164cb163befb81e8db32c6fd6786a9afa9240ec027bc518  libexplorer-v0.6.1-nif-2.16-riscv64gc-unknown-linux-gnu.so.tar.gz
27effed7647d4bf4ddafb4a9d085b2a093ef6716c05059d283c4f23de664a47d  libexplorer-v0.6.1-nif-2.16-x86_64-apple-darwin.so.tar.gz
a161fa131c4bd36c82678a27937534f17cbc4ec4090765e43a5d3582acfcc38b  libexplorer-v0.6.1-nif-2.16-x86_64-unknown-freebsd.so.tar.gz
b27e4f3e1690ec276ae876ceb7dd915d49164938dff937f3dc58a11bb5be5e5f  libexplorer-v0.6.1-nif-2.16-x86_64-unknown-linux-gnu.so.tar.gz
f48eb89af6a9a16e38704cc26be223f445cffbbf02faff0bfcacffc085fcc2b5  libexplorer-v0.6.1-nif-2.16-x86_64-unknown-linux-musl.so.tar.gz

v0.6.0

05 Jul 23:37
a32799e
Compare
Choose a tag to compare

This version is exciting because it has the addition of a bunch of functions, thanks to the contributors! 💜
Shout out to those who made fixes and docs improvements as well!

Added

  • Add support for OTP 26 and Elixir 1.15.

  • Allow Explorer.DataFrame.summarise/2 to work without groups.
    The aggregations can work considering the entire dataframe.

  • Add the following series functions: product/1, cummulative_product/1, abs/1,
    skew/2, window_standard_deviation/3, rank/2, year/1, mounth/1, day/1,
    hour/1, minute/1, second/1, strptime/2, strftime/2, argmin/1, argmax/1,
    cut/3, qcut/3, correlation/3, covariance/2 and clip/3.

    They cover a lot in terms of functionality, so please check the Explorer.Series
    docs for further details.

  • Add Explorer.DataFrame.nil_count/1 that counts the number of nil elements in each
    column.

  • Add Explorer.DataFrame.frequencies/2 that creates a new dataframe with unique rows
    and the frequencies of each.

  • Add Explorer.DataFrame.relocate/3 that enables changing order of columns from a df.

  • Add precompiled NIFs for FreeBSD.

  • Support scalar values in the on_true and on_false arguments of Explore.Series.select/3.

Fixed

  • Fix Series.day_of_week/1 and Series.round/2 for operations using a lazy frame.

  • Fix upcasted date to datetime for literal expressions. It allows to use scalar dates
    in expressions like this: DF.mutate(a: ~D[2023-01-01]). This also fixes the support
    for naive datetimes.

  • Improve error messages returned from the NIF to be always strings. Now we add more
    context to the string returned, instead of having {:context, error_message}.

  • Fix the :infer_schema_length option of Explorer.DataFrame.from_csv/2 when passing nil.
    Now it's possible to take into account the entire file to infer the schema.

Deprecated

  • Deprecate Explorer.Series.to_date/1 and Explorer.Series.to_time/1 in favor of
    using Explorer.Series.cast(s, :date) and Explorer.Series.cast(s, :time) respectively.

Pull requests

New Contributors

Full Changelog: v0.5.7...v0.6.0

SHA256 checksums

cf620a8cac143aa48c48a1cea9018afcdd62111718ac8ab245f57cc932ad6947  explorer-v0.6.0-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
8d1e9fbca29804e36e3bae1c8a2cdf630d23df779caa2bedee405d41b247df51  explorer-v0.6.0-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
73e745ec45ff8a95a6019db89487e8a8f69211129df6c8da353719f9ebe90ff7  explorer-v0.6.0-nif-2.16-x86_64-pc-windows-gnu.dll.tar.gz
9580e6530e27c708e1dd8286540eb8dda7567a7b2de39c2994af4f4a77b2a499  explorer-v0.6.0-nif-2.16-x86_64-pc-windows-msvc.dll.tar.gz
f87c135150b744904f6a523f304b84cbd84ede35ce980f228bbef03a398cff3a  libexplorer-v0.6.0-nif-2.15-aarch64-apple-darwin.so.tar.gz
9f0ca351c674b51cccb943fef44f1020073577a213d8461f61ae120c31c48b77  libexplorer-v0.6.0-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
3a5bfa73558b149bf61f85904910eb5fdcc8f98ee2f3a69b23aaebb3ed5f31bc  libexplorer-v0.6.0-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
0692103eacbcca1c12e20e5319b6877695161d5fe3e2c204efa6bee8bb5304dc  libexplorer-v0.6.0-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz
367806fe3c4d5e9b7a5ef162371df26c9e67beb2753ef9ef14ca0b59fa2b223a  libexplorer-v0.6.0-nif-2.15-x86_64-apple-darwin.so.tar.gz
9c56b63b2b9ef5afa6224a5b4a8c6268c4f48b065fbd5112a91d341a33e287df  libexplorer-v0.6.0-nif-2.15-x86_64-unknown-freebsd.so.tar.gz
530a4e1a003753002bff73dd76aca7327d560079a6b91d3ede3a5db229be3c15  libexplorer-v0.6.0-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
8e57eb68f43fb018598d7a5122fa6063e486a344cc9894eeed36f66cb1090997  libexplorer-v0.6.0-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz
4e39170ded7cf943bf2089f42ee4064b691b8f1a6abc55e4ee44626a8d2fc69c  libexplorer-v0.6.0-nif-2.16-aarch64-apple-darwin.so.tar.gz
e1ee68da99d23f180cf4bca8d13b27be4b7f81581414250da337aa0295eae7ea  libexplorer-v0.6.0-nif-2.16-aarch64-unknown-linux-gnu.so.tar.gz
67fd7f203dd5ad97b4f5cd130418fb2de6183d323eda43d2f79294713d73c83c  libexplorer-v0.6.0-nif-2.16-aarch64-unknown-linux-musl.so.tar.gz
23bade9a0694580789a2a832fb89493d0abbd8a7df5b1db17094118c007dc7d9  libexplorer-v0.6.0-nif-2.16-riscv64gc-unknown-linux-gnu.so.tar.gz
bc316e931290508a26a954a721fc125cacb2b5b0d46b86bde853bb470a508fa2  libexplorer-v0.6.0-nif-2.16-x86_64-apple-darwin.so.tar.gz
1f156097b969560cee6e988a21d20e3f2bc42827c4ca13b75b63ecf015fac43b  libexplorer-v0.6.0-nif-2.16-x86_64-unknown-freebsd.so.tar.gz
67d17cd38c0969cff40ddb2950eeec4c5b1cbbd5dc209302834723a4916c18c7  libexplorer-v0.6.0-nif-2.16-x86_64-unknown-linux-gnu.so.tar.gz
ae67e919e2bcb49bbe1229e35a9a4aa266b7c873cf122413d947384b08adba91  libexplorer-v0.6.0-nif-2.16-x86_64-unknown-linux-musl.so.tar.gz

v0.5.7

10 May 21:50
1db7146
Compare
Choose a tag to compare

Changes

Added

  • Allow Explorer.Series.select/3 to receive series of size 1 in both sides.

  • Add trigonometric functions sin/1, cos/1, tan/1, asin/1, acos/1 and
    atan/1 to Explorer.Series.

  • Add Explorer.DataFrame.to_rows_stream/2 function. This is useful to traverse
    dataframes with large series, but is not recommended since it can be an expensive
    operation.

  • Add LazyFrame version of Explorer.DataFrame.to_ipc/3.

  • Add options to control streaming when writing lazy dataframes. Now users can
    toggle streaming for the to_ipc/3 and to_parquet/3 functions.

  • Add Explorer.DataFrame.from_ipc_stream/2 lazy, but using the eager implementation
    underneath.

  • Add option to control the end of line (EOF) char when reading CSV files.
    We call this new option :eol_delimiter, and it's available for the from_csv/2
    and load_csv/2 functions in the Explorer.DataFrame module.

  • Allow Explorer.DataFrame.pivot_wider/4 to use category fields.

Fixed

  • Fix nif_not_loaded error when Explorer.Series.ewm_mean/2 is called from query.

  • Type check arguments for boolean series operations, only allowing series of
    the boolean dtype.

  • Do not use ../0 in order to keep compatible with Elixir 1.13

Removed

  • Temporarely remove support for ARM 32 bits computers in the precompilation
    workflow.

Pull requests

  • Fix nif_not_loaded error when Series.ewm_mean/2 is called from query by @sasikumar87 in #557
  • Allow Series.select/3 on_true and on_false both to receive series of size 1 by @sasikumar87 in #556
  • Add Trigonometric functions Series.sin/1, Series.cos/1 and Series.tan/1 by @sasikumar87 in #558
  • Add Trigonometric functions Series.asin/1, Series.acos/1 and Series.atan/1 by @sasikumar87 in #560
  • sin/1, cos/1 and tan/1 doesn't support integer dtype by @sasikumar87 in #561
  • Type check arguments for boolean series operations by @sasikumar87 in #564
  • Update Polars to v0.28 by @philss in #570
  • add Explorer.DataFrame.to_rows_stream method by @mlineen in #571
  • Fix typo/phrasing in Series documentation by @pgeraghty in #574
  • Add LazyFrame version of to_ipc/3 (#499) by @treebee in #579
  • Update rustler to v0.28.0 by @philss in #580
  • Add options to control streaming when writing lazy DF by @philss in #582
  • Implement from_ipc_stream/2 lazy, but using eager backend by @philss in #583
  • End of Line For CSV Loading/Parsing by @jeregrine in #578
  • add_rust_version_to_readme by @dkuku in #587
  • Allow pivot_wider to use category fields by @dkuku in #586
  • Add change log since version 0.5.6 by @philss in #592
  • Disable precompilation for ARM 32 bits by @philss in #593
  • Release v0.5.7 by @philss in #594

New Contributors

Full Changelog: v0.5.6...v0.5.7
Official Changelog: https://github.com/elixir-nx/explorer/blob/main/CHANGELOG.md

SHA256 checksums

d38cc2b39c0a5c80de012844f7b3e7f2b161986805150ef5d3b8f8b2c3d25c7e  explorer-v0.5.7-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
46dea7fc2da132d24f923b5bbff19321800539746f9573ba8274da50383f244c  explorer-v0.5.7-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
3e61118acaf116cc83e7cd571f8c60805ae319a50d156c64740e013f8443b34d  explorer-v0.5.7-nif-2.16-x86_64-pc-windows-gnu.dll.tar.gz
08722e26b48c0f84777640cec8953e50a02e171dec8b5b4409df34a0e6767d9e  explorer-v0.5.7-nif-2.16-x86_64-pc-windows-msvc.dll.tar.gz
11663b85bff09973f39650aa82e67e563fca6c69163ccd95569262a73f44ce43  libexplorer-v0.5.7-nif-2.15-aarch64-apple-darwin.so.tar.gz
f576bd5dde67d29288bda52a8a5b360eec90abc1500f118c64bbbda1a02905d4  libexplorer-v0.5.7-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
62254d43e442dc3d394526809204244b465234d9cad15fd1ff41a8671b241307  libexplorer-v0.5.7-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
dfdfc3556e49f1e2319e4b819649f351e41d0e42ae20a673db41b17adccbe2fe  libexplorer-v0.5.7-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz
b5194dc9778a6aadd96db334476bffe5a86d750863e144c42050ac0f344b2f29  libexplorer-v0.5.7-nif-2.15-x86_64-apple-darwin.so.tar.gz
a0d9a0c1dbb8999c9259005ea27efb12ea4e06d9591ca5252ed1bc703eedb081  libexplorer-v0.5.7-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
6e9e07a1c3573d7c6be51a81a3285309b14a1fbd5491c4c77e1e6cd01cd90493  libexplorer-v0.5.7-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz
4f03fcf97dc132930e7e80817c62525c2b6168847b2808b9d43c3c6b89216d86  libexplorer-v0.5.7-nif-2.16-aarch64-apple-darwin.so.tar.gz
365e53374bab6cb9b915d1d53057aaccb3e9c1f3052460f2a38b9ec63444a7ab  libexplorer-v0.5.7-nif-2.16-aarch64-unknown-linux-gnu.so.tar.gz
0ccfefbc578a33a031e6230fc0805ca935d52e810762f9b1f288259ed0504e4b  libexplorer-v0.5.7-nif-2.16-aarch64-unknown-linux-musl.so.tar.gz
3b8b7e081d755662db1e82c84966399aa5526f5072341243afa8b191b40f2102  libexplorer-v0.5.7-nif-2.16-riscv64gc-unknown-linux-gnu.so.tar.gz
57d2f36009fd384618aebc73e2bfb21bd07adce32dd4399b7575b1dc0f58ba73  libexplorer-v0.5.7-nif-2.16-x86_64-apple-darwin.so.tar.gz
54cf0e3bbff4f5d68ec26e28f78fa90d30b1edb91aa9c7eb2e63e862c0236aab  libexplorer-v0.5.7-nif-2.16-x86_64-unknown-linux-gnu.so.tar.gz
086fd86ca4821c5f03d376c5452657abd0767a25c0b135396f19da3b6319ac1f  libexplorer-v0.5.7-nif-2.16-x86_64-unknown-linux-musl.so.tar.gz

v0.5.6

24 Mar 21:04
fe55e11
Compare
Choose a tag to compare

Added

  • Add the following functions to the Explorer.Series module: log/1, log/2 and exp/1. They compute the logarithm and exponential of a series.

Fixed

  • Allow Explorer.Series.select/3 to receive series of size 1 for both the on_true and on_false arguments.

  • Fix the encoding of special float values that may return from some series functions. This is going to encode the atoms for NaN and infinity values.

Pull requests

  • Allow Series.select/3 on_true or on_false to receive series of size 1 by @sasikumar87 in #547
  • Add log/2 and exponential/1 to Series by @philss in #549
  • Fix encoding of special float values for Series by @philss in #551
  • Prepare release of v0.5.6 by @philss in #552

Full Changelog: v0.5.5...v0.5.6
Official Changelog: https://hexdocs.pm/explorer/changelog.html

Checksums

Here is the list of SHA256 checksums:

3328344386534d7a570b4ef273aaff258f52dce45aaef30eed0c99624561d032  explorer-v0.5.6-nif-2.15-x86_64-pc-windows-gnu.dll.tar.gz
869b73701f1c7081b621a43f4ccaa1e05f6f3c863c35c7e8fb55787f4c89d194  explorer-v0.5.6-nif-2.15-x86_64-pc-windows-msvc.dll.tar.gz
51889f3e52f62f7cf86dd0033593443235d630124e4e2e04096b0171265fa973  explorer-v0.5.6-nif-2.16-x86_64-pc-windows-gnu.dll.tar.gz
9b353e3732c6845e6a3f182fe0b0f38ed5886a6656d7ff2f59ad986540b795ea  explorer-v0.5.6-nif-2.16-x86_64-pc-windows-msvc.dll.tar.gz
f023d69f78e02f1dddf53ad4ebf808a55bc04c4cc7f9fbab65a550af2cadf32b  libexplorer-v0.5.6-nif-2.15-aarch64-apple-darwin.so.tar.gz
192da93513030e6b986b24aa4ff840294d50b58fea20a5c0aa0c6088e9df29dc  libexplorer-v0.5.6-nif-2.15-aarch64-unknown-linux-gnu.so.tar.gz
fcfc1280e75bba261608d005ceb801408073d9a27e68cd76c338e2b2d192da77  libexplorer-v0.5.6-nif-2.15-aarch64-unknown-linux-musl.so.tar.gz
80b51a309b55c2794eeefa9e7eda728ac3c1549107cd1ca11faba7661e46f1c5  libexplorer-v0.5.6-nif-2.15-arm-unknown-linux-gnueabihf.so.tar.gz
6b52012bbdc58efdfa0b60b53695bffff07c0aee9e2f1440d88ed4e996fa1a19  libexplorer-v0.5.6-nif-2.15-riscv64gc-unknown-linux-gnu.so.tar.gz
3660dea85d01a82589c302522b842c020635eb5974efe6081bbb0cb0483d67d9  libexplorer-v0.5.6-nif-2.15-x86_64-apple-darwin.so.tar.gz
6bb5fbeca7e2745d6081ce9ba0c649470a039c2f0cb0a892fb3902e740881817  libexplorer-v0.5.6-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
2ed7e6b685bff7c855e416f00ac73ad246ddea8961e46a9fb8f49f5235ccb081  libexplorer-v0.5.6-nif-2.15-x86_64-unknown-linux-musl.so.tar.gz
659d6f1e370beb4674a54d6c1f5c26144c43c07ecc1f7e244eb575b8e9fcd3b4  libexplorer-v0.5.6-nif-2.16-aarch64-apple-darwin.so.tar.gz
841632998efe174b22517be8e2cd46a5ddafb88a5cb4862460190ef551bd1e60  libexplorer-v0.5.6-nif-2.16-aarch64-unknown-linux-gnu.so.tar.gz
f988fd0221f8caa8d924d9f211ad38752d8fcd1a22b401e253dab930d6b000fb  libexplorer-v0.5.6-nif-2.16-aarch64-unknown-linux-musl.so.tar.gz
5989c06d09aeffe5be68f2ea7bb6173dda8e86b82b1c95c2c9b4c4368cfbde1c  libexplorer-v0.5.6-nif-2.16-arm-unknown-linux-gnueabihf.so.tar.gz
61711068adce0647978893d09a0a0084902762975aa6422d1c74b07cd3446e8a  libexplorer-v0.5.6-nif-2.16-riscv64gc-unknown-linux-gnu.so.tar.gz
4247459e3f31296ffeebf78b820111dbd6c228c67884aaa62f008a049614b2e0  libexplorer-v0.5.6-nif-2.16-x86_64-apple-darwin.so.tar.gz
8daf3b5b49d2a61e534e08ff22f3c86abd3c2b736f064003c1a6bc814a6914aa  libexplorer-v0.5.6-nif-2.16-x86_64-unknown-linux-gnu.so.tar.gz
e5af36a44c9e74833543d256de025ce4412b3a4128ac09940a7f6b5122bf010f  libexplorer-v0.5.6-nif-2.16-x86_64-unknown-linux-musl.so.tar.gz