Rust-based WebAssembly bindings to read and write Apache Parquet files

Overview

parquet-wasm

WebAssembly bindings to read and write the Parquet format to Apache Arrow.

This is designed to be used alongside a JavaScript Arrow implementation, such as the canonical JS Arrow library or potentially arrow-wasm.

Including all compression codecs, the generated brotli-encoded WASM bundle is 881KB.

Install

parquet-wasm is published to NPM. Install with

yarn add parquet-wasm
# or
npm install parquet-wasm

API

readParquet

readParquet(parquet_file: Uint8Array): Uint8Array

Takes as input a Uint8Array containing bytes from a loaded Parquet file. Returns a Uint8Array with data in Arrow IPC Stream format 1. To parse this into an Arrow table, use arrow.tableFromIPC in the JS bindings on the result from readParquet.

writeParquet

writeParquet(arrow_file: Uint8Array): Uint8Array

Takes as input a Uint8Array containing bytes in Arrow IPC File format 2. If you have an Arrow table, call arrow.tableToIPC(table, 'file') and pass the result to writeParquet.

For the initial release, writeParquet is hard-coded to use Snappy compression and Plain encoding. In the future these should be made configurable.

setPanicHook

setPanicHook(): void

Sets console_error_panic_hook in Rust, which provides better debugging of panics by having more informative console.error messages. Initialize this first if you're getting errors such as RuntimeError: Unreachable executed.

Using

parquet-wasm is distributed with three bindings for use in different environments.

  • Default, to be used in bundlers such as Webpack: import * as parquet from 'parquet-wasm'
  • Node, to be used with require in NodeJS: const parquet = require('parquet-wasm/node');
  • ESM, to be used directly from the Web as an ES Module: import * as parquet from 'parquet-wasm/web';

Example

Number((Math.random() * 20).toFixed(1))); const rainDates = Array.from( { length: LENGTH }, (_, i) => new Date(Date.now() - 1000 * 60 * 60 * 24 * i)); const rainfall = tableFromArrays({ precipitation: rainAmounts, date: rainDates }); // Write Arrow Table to Parquet const parquetBuffer = writeParquet(tableToIPC(rainfall, 'file')); // Read Parquet buffer back to Arrow Table const table = tableFromIPC(readParquet(parquetBuffer)); console.log(table.schema.toString()); // Schema<{ 0: precipitation: Float32, 1: date: Date64 }>">
import {tableFromArrays, tableFromIPC, tableToIPC} from 'apache-arrow';
import {readParquet, writeParquet} from "parquet-wasm";

// Create Arrow Table in JS
const LENGTH = 2000;
const rainAmounts = Float32Array.from(
    { length: LENGTH },
    () => Number((Math.random() * 20).toFixed(1)));

const rainDates = Array.from(
    { length: LENGTH },
    (_, i) => new Date(Date.now() - 1000 * 60 * 60 * 24 * i));

const rainfall = tableFromArrays({
    precipitation: rainAmounts,
    date: rainDates
});

// Write Arrow Table to Parquet
const parquetBuffer = writeParquet(tableToIPC(rainfall, 'file'));

// Read Parquet buffer back to Arrow Table
const table = tableFromIPC(readParquet(parquetBuffer));
console.log(table.schema.toString());
// Schema<{ 0: precipitation: Float32, 1: date: Date64
    
      }>
    

Compression support

The Parquet specification permits several compression codecs. This library currently supports:

  • Uncompressed
  • Snappy
  • Gzip
  • Brotli
  • ZSTD
  • LZ4

LZ4 compression appears not to work yet. When trying to parse a file with LZ4 compression I get an error: Uncaught (in promise) External format error: underlying IO error: WrongMagicNumber.

Future work

  • Tests 😄
  • User-specified column-specific encodings when writing
  • User-specified compression codec when writing

Development

  • Install wasm-pack
  • Compile: wasm-pack build, or change targets, e.g. wasm-pack build --target nodejs
  • Publish wasm-pack publish.

Publishing

wasm-pack supports three different targets:

  • bundler (used with bundlers like Webpack)
  • nodejs (used with Node, supports require)
  • web (used as an ES module directly from the web)

There are good reasons to distribute as any of these... so why not distribute as all three? wasm-pack doesn't support this directly but the build script in scripts/build.sh calls wasm-pack three times and merges the outputs. This means that bundler users can use the default, Node users can use parquet-wasm/node and ES Modules users can use parquet-wasm/web in their imports.

To publish:

bash ./scripts/build.sh
wasm-pack publish

Acknowledgements

A starting point of my work came from @my-liminal-space's read-parquet-browser (which is also dual licensed MIT and Apache 2).

@domoritz's arrow-wasm was a very helpful reference for bootstrapping Rust-WASM bindings.

Footnotes

  1. I originally decoded Parquet files to the Arrow IPC File format, but Arrow JS occasionally produced bugs such as Error: Expected to read 1901288 metadata bytes, but only read 644 when parsing using arrow.tableFromIPC. When testing the same buffer in Pyarrow, pa.ipc.open_file succeeded but pa.ipc.open_stream failed, leading me to believe that the Arrow JS implementation has some bugs to decide when arrow.tableFromIPC should internally use the RecordBatchStreamReader vs the RecordBatchFileReader.

  2. I'm not great at Rust and the IPC File format seemed easier to parse in Rust than the IPC Stream format 🙂 .

Comments
  • Async reader

    Async reader

    Working async reader just for the arrow2 bindings.

    TODO:

    • [ ] Test with a parquet dataset
    • [ ] Make read_row_group take a RowGroupMetaData instead of a FileMetaData?
    • [ ] Ideally wouldn't need to copy the metadata object for each fetch, but not clear if it's possible in current wasm-bindgen for the async functions to take references as function parameters, since wasm-bindgen doesn't support lifetimes

    Very early, just putting this up for planning.

    Todo:

    • [x] working fetch example from rust (from here)
    • [ ]

    References:

    • https://github.com/jorgecarleitao/arrow2/blob/v0.10.1/examples/s3/src/main.rs
    • https://github.com/jorgecarleitao/parquet2/blob/7661cd4144/examples/s3/src/main.rs
    • https://github.com/DataEngineeringLabs/ranged-reader-rs/blob/main/src/stream.rs

    Future work:

    • Update arrow2/parquet2 to not need an initial HEAD request for the length of the data. Should be able to use a negative byte range for the first fetch, and that should include all byte ranges.
    • Configurable footer initial read size (right now hard coded in arrow2 to use 64kb)
    opened by kylebarron 3
  • TypeError: wasm.__wbindgen_add_to_stack_pointer is not a function

    TypeError: wasm.__wbindgen_add_to_stack_pointer is not a function

    Hi,

    I was looking for a JS library for reading parquet files on the browser, and I found parquet-wasm.

    My current setup is the following:

    import { readParquet } from "parquet-wasm";
    
    const parquetFile = files[0]; // File picked from input tag
    const fileData = new Blob([parquetFile]);
    const promise = new Promise(getBuffer(fileData));
    
    promise
    	.then(function (data) {
    		const arrowStream = readParquet(data);
    	})
    	.catch(function (err) {
    		console.log("Error: ", err);
    	});
    
    function getBuffer(fileData) {
    	return function (resolve) {
    		const reader = new FileReader();
    		reader.readAsArrayBuffer(fileData);
    		reader.onload = function () {
    			const arrayBuffer = reader.result;
    			const bytes = new Uint8Array(arrayBuffer);
    			resolve(bytes);
    		};
    	};
    }
    

    Unfortunately I get the following error Error: TypeError: wasm.__wbindgen_add_to_stack_pointer is not a function.

    Do you have any suggestion? Thanks for the help.

    opened by riccardoscalco 3
  • Switch to Arrow2/Parquet2

    Switch to Arrow2/Parquet2

    Seems to be a bit faster (and safer Rust), but most notably, the generated IPC just works out of the box in Arrow JS.

    Ignore the ugly newbie rust code 😂

    opened by kylebarron 3
  • Error: Unrecognized type:

    Error: Unrecognized type: "LargeUtf8" (20) during parquet conversion

    During reading of a compressed parquet file:

    arrow = require('[email protected]')
    
    readParquet = {
      const parquetModule = await import(
        "https://unpkg.com/[email protected]/esm/arrow2.js"
      );
      // Need to await the default export first to initialize the WebAssembly code
      await parquetModule.default();
      return parquetModule.readParquet;
    }
    

    ... Data loading ...

    data = await loadData()
    table = arrow.tableFromIPC(readParquet(data))
    

    The error Error: Unrecognized type: "LargeUtf8" (20) is returned.

    opened by ddemaeyer 2
  • Split functions into non-wasm-bindgen helpers

    Split functions into non-wasm-bindgen helpers

    For a while, there will probably be issues with the APIs, either in the wasm bindings, my bindings, or the underlying libraries. It will be necessary to debug these problems outside of the web environment, at least to the extent possible.

    To that end I think it'll be very helpful to have a debug CLI, where essentially the exact same binding code is run, but locally instead of in wasm.

    This means:

    • Decoupling any JS specific code out of read_parquet and write_parquet. They should take as input and output rust slices and buffers, and return rust errors, not js errors. (Maybe read up on how method()?; works, which would make the code a lot cleaner).
    • Creating an optional feature with main.rs which would be a CLI input to these four functions.
    // lib.rs
    
    #[cfg(feature = "arrow1")]
    #[wasm_bindgen(js_name = readParquet1)]
    pub fn read_parquet(parquet_file: &[u8]) -> Result<Uint8Array, JsValue> {
      match crate::arrow1::read_parquet() {
        // This function would return a rust vec that would be copied to a Uint8Array here
        Ok(buffer) => buffer,
        Err(error) => JsValue::from_str(format!("{}", error).as_str())
      }
    }
    
    // main.rs
    // CLI that wraps crate::arrow1::read_parquet and writes output to a local file
    
    opened by kylebarron 2
  • Bump parquet from 19.0.0 to 28.0.0

    Bump parquet from 19.0.0 to 28.0.0

    Bumps parquet from 19.0.0 to 28.0.0.

    Changelog

    Sourced from parquet's changelog.

    Historical Changelog

    27.0.0 (2022-11-11)

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Row Format: Option to detach/own a row #3078 [arrow]
    • Row Format: API to check if datatypes are supported #3077 [arrow]
    • Deprecate Buffer::count_set_bits #3067 [arrow]
    • Add Decimal128 and Decimal256 to downcast_primitive #3055 [arrow]
    • Improved UX of creating TimestampNanosecondArray with timezones #3042 [arrow]
    • Cast decimal256 to signed integer #3039 [arrow]
    • Support casting Date64 to Timestamp #3037 [arrow]
    • Check overflow when casting floating point value to decimal256 #3032 [arrow]
    • Compare i256 in validate_decimal256_precision #3024 [arrow]
    • Check overflow when casting floating point value to decimal128 #3020 [arrow]
    • Add macro downcast_temporal_array #3008 [arrow]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump parquet from 19.0.0 to 27.0.0

    Bump parquet from 19.0.0 to 27.0.0

    Bumps parquet from 19.0.0 to 27.0.0.

    Changelog

    Sourced from parquet's changelog.

    Historical Changelog

    26.0.0 (2022-10-28)

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Optimized way to count the numbers of true and false values in a BooleanArray #2963 [arrow]
    • Add pow to i256 #2954 [arrow]
    • Write Generic Code over [Large]BinaryArray and [Large]StringArray #2946 [arrow]
    • Add Page Row Count Limit #2941 [parquet]
    • prettyprint to show timezone offset for timestamp with timezone #2937 [arrow]
    • Cast numeric to decimal256 #2922 [arrow]
    • Add freeze_with_dictionary API to MutableArrayData #2914 [arrow]
    • Support decimal256 array in sort kernels #2911 [arrow]
    • support [+/-]hhmm and [+/-]hh as fixedoffset timezone format #2910 [arrow]
    • Cleanup decimal sort function #2907 [arrow]
    • replace from_timestamp by from_timestamp_opt #2892 [arrow]
    • Move Primitive arity kernels to arrow-array #2787 [arrow]
    • add overflow-checking for negative arithmetic kernel #2662 [arrow]

    Fixed bugs:

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump clap from 3.2.20 to 4.0.24

    Bump clap from 3.2.20 to 4.0.24

    Bumps clap from 3.2.20 to 4.0.24.

    Release notes

    Sourced from clap's releases.

    v4.0.24

    [4.0.24] - 2022-11-14

    Fixes

    • Avoid panic when printing an argument that isn't built

    v4.0.23

    [4.0.23] - 2022-11-11

    Fixes

    • Don't panic on reporting invalid-long errors when followed by invalid UTF8
    • (help) Clarified argument to help subcommand

    v4.0.22

    [4.0.22] - 2022-11-07

    Fixes

    • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

    v4.0.21

    [4.0.21] - 2022-11-07

    Features

    • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

    v4.0.20

    [4.0.20] - 2022-11-07

    Fixes

    • (derive) Allow defaulted value parser for '()' fields

    v4.0.19

    [4.0.19] - 2022-11-04

    Features

    • ColorChoice now implements ValueEnum

    v4.0.18

    [4.0.18] - 2022-10-20

    Fixes

    • (derive) Allow #[command(skip)] to also work with enum variants with a value

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.0.24] - 2022-11-14

    Fixes

    • Avoid panic when printing an argument that isn't built

    [4.0.23] - 2022-11-11

    Fixes

    • Don't panic on reporting invalid-long errors when followed by invalid UTF8
    • (help) Clarified argument to help subcommand

    [4.0.22] - 2022-11-07

    Fixes

    • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

    [4.0.21] - 2022-11-07

    Features

    • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

    [4.0.20] - 2022-11-07

    Fixes

    • (derive) Allow defaulted value parser for '()' fields

    [4.0.19] - 2022-11-04

    Features

    • ColorChoice now implements ValueEnum

    [4.0.18] - 2022-10-20

    Fixes

    • (derive) Allow #[command(skip)] to also work with enum variants with a value

    [4.0.17] - 2022-10-18

    Fixes

    • Allow using Arg::last(true) with Arg::value_hint(ValueHint::CommandWithArguments)

    [4.0.16] - 2022-10-18

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump arrow from 19.0.0 to 26.0.0

    Bump arrow from 19.0.0 to 26.0.0

    Bumps arrow from 19.0.0 to 26.0.0.

    Changelog

    Sourced from arrow's changelog.

    Historical Changelog

    25.0.0 (2022-10-14)

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    Fixed bugs:

    • Don't try to infer nulls in CSV schema inference #2859 [arrow]
    • parquet::arrow::arrow_writer::ArrowWriter ignores page size properties #2853 [parquet]
    • Introducing ArrowNativeTypeOp made it impossible to call kernels from generics #2839 [arrow]
    • Unsound ArrayData to Array Conversions #2834 [parquet] [arrow]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump clap from 3.2.20 to 4.0.22

    Bump clap from 3.2.20 to 4.0.22

    Bumps clap from 3.2.20 to 4.0.22.

    Release notes

    Sourced from clap's releases.

    v4.0.22

    [4.0.22] - 2022-11-07

    Fixes

    • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

    v4.0.21

    [4.0.21] - 2022-11-07

    Features

    • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

    v4.0.20

    [4.0.20] - 2022-11-07

    Fixes

    • (derive) Allow defaulted value parser for '()' fields

    v4.0.19

    [4.0.19] - 2022-11-04

    Features

    • ColorChoice now implements ValueEnum

    v4.0.18

    [4.0.18] - 2022-10-20

    Fixes

    • (derive) Allow #[command(skip)] to also work with enum variants with a value

    v4.0.17

    [4.0.17] - 2022-10-18

    Fixes

    • Allow using Arg::last(true) with Arg::value_hint(ValueHint::CommandWithArguments)

    v4.0.16

    [4.0.16] - 2022-10-18

    Fixes

    • Arg::exclusive(true) should not be exclusive with the argument's own ArgGroup

    v4.0.15

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.0.22] - 2022-11-07

    Fixes

    • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

    [4.0.21] - 2022-11-07

    Features

    • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

    [4.0.20] - 2022-11-07

    Fixes

    • (derive) Allow defaulted value parser for '()' fields

    [4.0.19] - 2022-11-04

    Features

    • ColorChoice now implements ValueEnum

    [4.0.18] - 2022-10-20

    Fixes

    • (derive) Allow #[command(skip)] to also work with enum variants with a value

    [4.0.17] - 2022-10-18

    Fixes

    • Allow using Arg::last(true) with Arg::value_hint(ValueHint::CommandWithArguments)

    [4.0.16] - 2022-10-18

    Fixes

    • Arg::exclusive(true) should not be exclusive with the argument's own ArgGroup

    [4.0.15] - 2022-10-13

    Fixes

    • (error) Don't suggest -- when it doesn't help
    • (error) Be more consistent in quoting, punctuation, and indentation in errors

    [4.0.14] - 2022-10-12

    ... (truncated)

    Commits
    • 6cbe5c4 chore: Release
    • d2739c9 docs: Update changelog
    • eaa6bfe Merge pull request #4463 from epage/help
    • dfe9e73 fix(help): Update auto-next-line to use new padding
    • 539577d refactor(help): Remove dead code
    • bc457b1 chore: Release
    • d5c3c13 docs: Update changelog
    • 87edc19 Merge pull request #4461 from epage/help
    • c37ab6c fix(derive): Allow 'long_help' to force populating from doc comment
    • 8751152 test(derive): Verify long_help behavior
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump parquet from 19.0.0 to 26.0.0

    Bump parquet from 19.0.0 to 26.0.0

    Bumps parquet from 19.0.0 to 26.0.0.

    Changelog

    Sourced from parquet's changelog.

    Historical Changelog

    25.0.0 (2022-10-14)

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    Fixed bugs:

    • Don't try to infer nulls in CSV schema inference #2859 [arrow]
    • parquet::arrow::arrow_writer::ArrowWriter ignores page size properties #2853 [parquet]
    • Introducing ArrowNativeTypeOp made it impossible to call kernels from generics #2839 [arrow]
    • Unsound ArrayData to Array Conversions #2834 [parquet] [arrow]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump parquet from 19.0.0 to 29.0.0

    Bump parquet from 19.0.0 to 29.0.0

    Bumps parquet from 19.0.0 to 29.0.0.

    Changelog

    Sourced from parquet's changelog.

    Historical Changelog

    28.0.0 (2022-11-25)

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Add iterator to RowSelection #3172 [parquet]
    • create an integration test set for parquet crate against pyspark for working with bloom filters #3167 [parquet]
    • Row Format Size Tracking #3160 [arrow]
    • Add ArrayBuilder::finish_cloned() #3154 [arrow]
    • Optimize memory usage of json reader #3150
    • Add Field::size and DataType::size #3147 [parquet] [arrow]
    • Add like_utf8_scalar_dyn kernel #3145 [arrow]
    • support comparison for decimal128 array with scalar in kernel #3140 [arrow]
    • audit and create a document for bloom filter configurations #3138 [parquet]
    • Should be the rounding vs truncation when cast decimal to smaller scale #3137 [arrow]
    • Upgrade chrono to 0.4.23 #3120

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump arrow2 from 0.14.1 to 0.15.0

    Bump arrow2 from 0.14.1 to 0.15.0

    Bumps arrow2 from 0.14.1 to 0.15.0.

    Release notes

    Sourced from arrow2's releases.

    v0.15.0

    A new release is here, adding a number of new features and improvements to arrow2. Thank you to everyone that contributed to it!

    This release adds support to a new format, the "record" JSON format, contributed by @​AnIrishDuck, a new trait TryExtendFromSelf to efficiently concatenate an array into an existing mutable array, and multiple improvements by @​sundy-li and @​ritchie46 to performance. Finally, we have a new API OffsetsBuffer and Offsets proposed by @​ritchie46 to allow creating variable sized-arrays without having to check for offsets.

    This release also features a number of contributions from first contributors:

    Thank you everyone for the great work this year, and happy festivities everyone!

    Full Changelog

    Breaking changes:

    New features:

    Fixed bugs:

    • Parquet writes all values of sliced arrays? #1323
    • Avro schema: Invalid record names #1269
    • Fixed writing nested/sliced arrays to parquet #1326 (ritchie46)
    • Fixed failing to accept dictionary full of nulls #1312 (ritchie46)
    • Added support for Extension types in ffi #1300 (jondo2010)
    • Fixed error in memory usage of sliced binary/list/utf8arrays #1293 (ritchie46)
    • Fixed descending ordering when specify nulls first #1286 (sandflee)
    • Added avro record names when converting arrow schema to avro #1279 (Samrose-Ahmed)

    Enhancements:

    ... (truncated)

    Changelog

    Sourced from arrow2's changelog.

    v0.15.0 (2022-12-18)

    Full Changelog

    Breaking changes:

    New features:

    Fixed bugs:

    • Parquet writes all values of sliced arrays? #1323
    • Avro schema: Invalid record names #1269
    • Fixed writing nested/sliced arrays to parquet #1326 (ritchie46)
    • Fixed failing to accept dictionary full of nulls #1312 (ritchie46)
    • Added support for Extension types in ffi #1300 (jondo2010)
    • Fixed error in memory usage of sliced binary/list/utf8arrays #1293 (ritchie46)
    • Fixed descending ordering when specify nulls first #1286 (sandflee)
    • Added avro record names when converting arrow schema to avro #1279 (Samrose-Ahmed)

    Enhancements:

    Documentation updates:

    v0.14.2 (2022-10-05)

    Full Changelog

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump clap from 3.2.20 to 4.0.26

    Bump clap from 3.2.20 to 4.0.26

    Bumps clap from 3.2.20 to 4.0.26.

    Release notes

    Sourced from clap's releases.

    v4.0.26

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    v4.0.25

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    v4.0.24

    [4.0.24] - 2022-11-14

    Fixes

    • Avoid panic when printing an argument that isn't built

    v4.0.23

    [4.0.23] - 2022-11-11

    Fixes

    • Don't panic on reporting invalid-long errors when followed by invalid UTF8
    • (help) Clarified argument to help subcommand

    v4.0.22

    [4.0.22] - 2022-11-07

    Fixes

    • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

    v4.0.21

    [4.0.21] - 2022-11-07

    Features

    • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

    v4.0.20

    [4.0.20] - 2022-11-07

    Fixes

    • (derive) Allow defaulted value parser for '()' fields

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    [4.0.24] - 2022-11-14

    Fixes

    • Avoid panic when printing an argument that isn't built

    [4.0.23] - 2022-11-11

    Fixes

    • Don't panic on reporting invalid-long errors when followed by invalid UTF8
    • (help) Clarified argument to help subcommand

    [4.0.22] - 2022-11-07

    Fixes

    • (help) Don't overflow into next-line-help early due to stale (pre-v4) padding calculations

    [4.0.21] - 2022-11-07

    Features

    • (derive) long_about and long_help attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)

    [4.0.20] - 2022-11-07

    Fixes

    • (derive) Allow defaulted value parser for '()' fields

    [4.0.19] - 2022-11-04

    Features

    • ColorChoice now implements ValueEnum

    [4.0.18] - 2022-10-20

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump arrow from 19.0.0 to 27.0.0

    Bump arrow from 19.0.0 to 27.0.0

    Bumps arrow from 19.0.0 to 27.0.0.

    Changelog

    Sourced from arrow's changelog.

    Historical Changelog

    26.0.0 (2022-10-28)

    Full Changelog

    Breaking changes:

    Implemented enhancements:

    • Optimized way to count the numbers of true and false values in a BooleanArray #2963 [arrow]
    • Add pow to i256 #2954 [arrow]
    • Write Generic Code over [Large]BinaryArray and [Large]StringArray #2946 [arrow]
    • Add Page Row Count Limit #2941 [parquet]
    • prettyprint to show timezone offset for timestamp with timezone #2937 [arrow]
    • Cast numeric to decimal256 #2922 [arrow]
    • Add freeze_with_dictionary API to MutableArrayData #2914 [arrow]
    • Support decimal256 array in sort kernels #2911 [arrow]
    • support [+/-]hhmm and [+/-]hh as fixedoffset timezone format #2910 [arrow]
    • Cleanup decimal sort function #2907 [arrow]
    • replace from_timestamp by from_timestamp_opt #2892 [arrow]
    • Move Primitive arity kernels to arrow-array #2787 [arrow]
    • add overflow-checking for negative arithmetic kernel #2662 [arrow]

    Fixed bugs:

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump getrandom from 0.2.7 to 0.2.8

    Bump getrandom from 0.2.7 to 0.2.8

    Bumps getrandom from 0.2.7 to 0.2.8.

    Changelog

    Sourced from getrandom's changelog.

    [0.2.8] - 2022-10-20

    Changed

    Added

    • Added benchmarks to track buffer initialization cost #272

    Fixed

    • Use $crate in register_custom_getrandom! #270

    Documentation

    • Add information about enabling "js" feature #280
    • Fix link to wasm-bindgen #278
    • Document the varied implementations for underlying randomness sources #276

    #284: rust-random/getrandom#284 #295: rust-random/getrandom#295 #272: rust-random/getrandom#272 #270: rust-random/getrandom#270 #280: rust-random/getrandom#280 #278: rust-random/getrandom#278 #276: rust-random/getrandom#276

    Commits
    • 5c1bb00 Release v0.2.8 (#294)
    • 353d0ca Update docs for wasm32-unknown-unknown implementation (#295)
    • cfdad53 Merge pull request #284 from rust-random/webcrypto
    • 9962c70 Update Module::require internal comments
    • e0c93b1 Catch call to module.require
    • 0503000 Fix link typo
    • 0579fe3 Update documentation and error messages
    • d69e8e0 Rework JS feature detection
    • d3aa089 Add description about Cargo js feature for WebAssembly section (#280)
    • 0b71d50 Fix link to wasm-bindgen (#278)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump futures from 0.3.24 to 0.3.25

    Bump futures from 0.3.24 to 0.3.25

    Bumps futures from 0.3.24 to 0.3.25.

    Release notes

    Sourced from futures's releases.

    0.3.25

    • Fix soundness issue in join! and try_join! macros (#2649)
    • Implement Clone for sink::Drain (#2650)
    Changelog

    Sourced from futures's changelog.

    0.3.25 - 2022-10-20

    • Fix soundness issue in join! and try_join! macros (#2649)
    • Implement Clone for sink::Drain (#2650)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.4.0-beta.1)
  • v0.4.0-beta.1(Aug 8, 2022)

    What's Changed

    • Add lz4_raw and zstd compressions for parquet2 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/114
    • Simplify cargo features by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/117
    • Add vscode rust-analyzer target setting by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/131
    • add msrv by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/132
    • pin clap to 3.1.* by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/139
    • Make writerProperties optional in JS api by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/152
    • Add bindings for arrow2 metadata (without serde support) by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/153
    • Async reader by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/96
    • Cleaner error handling by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/157
    • implement From instead of custom methods by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/168
    • Remove "2" from function names in arrow2 api by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/173
    • Make arrow2 the default bundle by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/174
    • Improved documentation for async reading by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/175

    Full Changelog: https://github.com/kylebarron/parquet-wasm/compare/v0.3.1...v0.4.0-beta.1

    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Apr 26, 2022)

    What's Changed

    • Bump arrow from 11.0.0 to 11.1.0 by @dependabot in https://github.com/kylebarron/parquet-wasm/pull/77
    • Update lockfile by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/76
    • Add clippy by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/78
    • Remove old debug script by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/79
    • Bump clap from 3.1.8 to 3.1.9 by @dependabot in https://github.com/kylebarron/parquet-wasm/pull/87
    • Check that input exists/is a uint8array by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/102
    • Update test files to those written by pyarrow v7 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/103
    • Update to arrow and parquet 12.0 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/105
    • Bump clap from 3.1.9 to 3.1.12 by @dependabot in https://github.com/kylebarron/parquet-wasm/pull/98
    • Create arrow1/arrow2 read benchmarks by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/82
    • Publish docs on tag by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/106
    • Update readme by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/107
    • Add published examples section to readme by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/108
    • Unify build script by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/109
    • esm2 entrypoint with no import.meta.url by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/110
    • Bump version to 0.3.1 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/111

    Full Changelog: https://github.com/kylebarron/parquet-wasm/compare/v0.3.0...v0.3.1

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Apr 4, 2022)

    What's Changed

    • Debug cli by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/64
    • Bump to arrow 11.0 to support zstd compression by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/66
    • Update bundling by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/67
    • Add dependabot by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/70
    • Bump clap from 3.1.6 to 3.1.8 by @dependabot in https://github.com/kylebarron/parquet-wasm/pull/71
    • Bump getrandom from 0.2.5 to 0.2.6 by @dependabot in https://github.com/kylebarron/parquet-wasm/pull/72
    • Bump version to 0.3.0 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/74

    New Contributors

    • @dependabot made their first contribution in https://github.com/kylebarron/parquet-wasm/pull/71

    Full Changelog: https://github.com/kylebarron/parquet-wasm/compare/v0.2.0...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Mar 18, 2022)

    What's Changed

    • Restore arrow-rs support by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/21
    • Write parquet with arrow1 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/23
    • Refactor code into lower-level functions, use ? operator by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/25
    • Make record batch size the nrows of the first row group by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/26
    • Rename arrow-rs api as default by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/31
    • Implement writerPropertiesBuilder for arrow1 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/30
    • Refactor into modules by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/32
    • Update bundling to create arrow2 entrypoints by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/33
    • Node testing setup by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/34
    • Helper to copy vec to Uint8Array by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/38
    • Faster builds on Node CI tests by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/39
    • Rust CI caching by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/40
    • ZSTD mac instructions in readme by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/42
    • Keep opt-level = s and remove console_error_panic_hook by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/48
    • WriterPropertiesBuilder for arrow2 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/49
    • Docstrings for public functions, structs, enums by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/50
    • Compression-specific features by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/51
    • Add more node tests by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/52
    • Separate reader and writer features by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/47
    • Docs update by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/53
    • Working typedoc by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/55
    • Update docstrings and readme by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/60
    • Rename parquet_wasm bundle to "bundler" by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/61
    • Update changelog and bump to 0.2.0 by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/62

    Full Changelog: https://github.com/kylebarron/parquet-wasm/compare/v0.1.1...v0.2.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Mar 7, 2022)

    What's Changed

    • Add fmt and test CI jobs by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/6
    • A couple suggestions from clippy by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/8
    • Better bundling by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/10
    • Bump version to 0.1.1, add changelog by @kylebarron in https://github.com/kylebarron/parquet-wasm/pull/14

    Full Changelog: https://github.com/kylebarron/parquet-wasm/compare/v0.1.0...v0.1.1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Mar 6, 2022)

Owner
Kyle Barron
I'm a developer creating mapping-focused data visualizations.
Kyle Barron
bn.js bindings for Rust & WebAssembly with primitive-types support

bn.rs bn.js bindings for Rust & WebAssembly with primitive-types support Write Rust code that uses BN use std::str::FromStr; use primitive_types::{H1

Alexey Shekhirin 23 Nov 22, 2022
A simple event-driven library for parsing WebAssembly binary files

The WebAssembly binary file decoder in Rust A Bytecode Alliance project The decoder library provides lightweight and fast decoding/parsing of WebAssem

Yury Delendik 8 Jul 27, 2022
Contains the source code to compile the drop'in language into WebAssembly files

drop'in compiler This repository contains the source code to compile the drop'in language into WebAssembly files. This source code is in an experiment

Blue Forest 2 Dec 17, 2022
A console and web-based Gomoku written in Rust and WebAssembly

?? rust-gomoku A console and web-based Gomoku written in Rust and WebAssembly Getting started with cargo & npm Install required program, run # install

namkyu1999 2 Jan 4, 2022
darkforest is a console and web-based Roguelike written in Rust and WebAssembly.

darkforest darkforest is a console and web-based Roguelike written in Rust and WebAssembly. Key Features TBA Quick Start TBA How To Contribute Contrib

Chris Ohk 5 Oct 5, 2021
A handy calculator, based on Rust and WebAssembly.

qubit ?? Visit Website To Use Calculator Example ?? Visit Website To Use Calculator 2 + 2

Abhimanyu Sharma 55 Dec 26, 2022
Client for integrating private analytics in fast and reliable libraries and apps using Rust and WebAssembly

TelemetryDeck Client Client for integrating private analytics in fast and reliable libraries and apps using Rust and WebAssembly The library provides

Konstantin 2 Apr 20, 2022
Simple file sharing with client-side encryption, powered by Rust and WebAssembly

Hako Simple file sharing with client-side encryption, powered by Rust and WebAssembly Not feature-packed, but basic functionalities are just working.

Jaehyeon Park 30 Nov 25, 2022
Zaplib is an open-source library for speeding up web applications using Rust and WebAssembly.

⚡ Zaplib Zaplib is an open-source library for speeding up web applications using Rust and WebAssembly. It lets you write high-performance code in Rust

Zaplib 1.2k Jan 5, 2023
A template for kick starting a Rust and WebAssembly project using wasm-pack.

A template for kick starting a Rust and WebAssembly project using wasm-pack.

Haoxi Tan 1 Feb 14, 2022
A simple Rust and WebAssembly real-time implementation of the Vigénere Cipher utilizing the Sycamore reactive library.

WebAssembly Vigenère Cipher A simple Rust and WebAssembly real-time implementation of the Vigenère Cipher utilizing the Sycamore reactive library, Tru

Rodrigo Santiago 6 Oct 11, 2022
🚀Wasmer is a fast and secure WebAssembly runtime that enables super lightweight containers to run anywhere

Wasmer is a fast and secure WebAssembly runtime that enables super lightweight containers to run anywhere: from Desktop to the Cloud, Edge and IoT devices.

Wasmer 14.1k Jan 8, 2023
Compiler infrastructure and toolchain library for WebAssembly

Binaryen Binaryen is a compiler and toolchain infrastructure library for WebAssembly, written in C++. It aims to make compiling to WebAssembly easy, f

WebAssembly 6.1k Dec 30, 2022
Sealed boxes implementation for Rust/WebAssembly.

Sealed boxes for Rust/WebAssembly This Rust crate provides libsodium sealed boxes for WebAssembly. Usage: // Recipient: create a new key pair let reci

Frank Denis 16 Aug 28, 2022
WebAssembly on Rust is a bright future in making application runs at the Edge or on the Serverless technologies.

WebAssembly Tour WebAssembly on Rust is a bright future in making application runs at the Edge or on the Serverless technologies. We spend a lot of ti

Thang Chung 129 Dec 28, 2022
A Rust ESP stack trace decoder that can also runs in your browser thanks to WebAssembly

ESP Stack Trace Decoder A Rust ESP stack trace decoder that can also runs in your browser thanks to WebAssembly. It is composed of a ⌨️ Rust library,

Maxime BORGES 20 Oct 5, 2022
A simple compile-to-WebAssembly language rewritten in Rust

chasm A very simple compile-to-WebAssembly language You can play with chasm online. This is a rewrite in Rust of the compiler for the language chasm.

null 11 Nov 27, 2022
Stylist is a CSS-in-Rust styling solution for WebAssembly Applications.

Stylist Stylist is a CSS-in-Rust styling solution for WebAssembly Applications. This is a fork of css-in-rust. Install Add the following to your Cargo

Kaede Hoshikawa 190 Dec 30, 2022
WebAssembly serialization/deserialization in rust

parity-wasm Low-level WebAssembly format library. Documentation Rust WebAssembly format serializing/deserializing Add to Cargo.toml [dependencies] par

Parity Technologies 391 Nov 17, 2022