Comments (4)
Initially, I'm thinking this is interesting for a separate project (hashing as to cramjam's compression orientation), however just from glancing at xxhash briefly, I'm not sure it fits into the scope/genre of cramjam.
I'm also a bit confused how python's lz4 relates to xxhash? (at least for how you get it) Scanning the docs I don't see any API for it. Is it python's lz4 ships the xxhash C lib w/ it?
Anyhow, I think getting a xxhash impl going and running on pyodide should be pretty okay just don't have the free time available for it. On the off chance you've got some funding available, I'd be happy to do this under a contract agreement. (feel free to email me if this is the case and we can go from there) Otherwise I may do something much later when time is more present. :)
from cramjam.
The reason that I'm interested is because we have a file format that always precedes an LZ4-compressed block of data with an xxhash checksum, so LZ4 and xxhash are linked as dependencies: if we need LZ4, then we need xxhash.
I'm not entirely sure why xxhash is linked to LZ4 specifically—maybe the other compressors have built-in checksums and LZ4 doesn't, so xxhash arbitrarily chosen to fill that gap? When I saw that the C implementation (not Python) of liblz4 has a header file called xxhash, I thought that explained the connection: these two algorithms have a common origin, but they've been packaged separately in Python.
Another avenue I can try is to see if the Python xxhash library can get added to Pyodide. Maybe it's easier for xxhash to add a meta.yaml build script to Pyodide than for you to port the C code of the xxhash algorithm to Rust? From the perspective of a dependent library that wants to run on JupyterLite, either would work for me, and now that I'm talking myself into it, it sounds like adding a build target is easier than porting an algorithm between languages with sufficient testing.
from cramjam.
To cross-link these, here's the request I made at python-xxhash: ifduyue/python-xxhash#65
from cramjam.
I agree, adding to python-xxhash would be the most beneficial. Anyway thanks for the additional context and information. Closing this as I think it's out of scope for cramjam.
from cramjam.
Related Issues (20)
- Accept buffers with types other than u8
- pyo3_runtime.PanicException: Failed to import NumPy module HOT 2
- blosc? HOT 5
- Publish Python 3.12 wheel? HOT 6
- Any plans to release pypy wheels for windows? HOT 2
- TypeError: 'Buffer' does not support the buffer interface HOT 4
- Python test test_variants_different_dtypes[brotli] sometimes times out HOT 4
- lzma / xz support? HOT 12
- Remove extra zstd-safe dep
- Please coordinate PyPI and crates.io releases if possible HOT 2
- Equality check on values for Buffer
- proc-macro2 1.0.56 doesn't work with versions of rust since July
- cramjam 2.8.1 release on conda? HOT 4
- Python: tests/test_variants.py::test_variants_different_dtypes randomly fail with `hypothesis.errors.FailedHealthCheck: Examples routinely exceeded the max allowable size`
- Support PyPy output of `bytes` and `memoryview` for de/compress_into functions HOT 9
- Unused `Cargo.lock` files? HOT 2
- use with cargo? HOT 2
- macos wheels aren't built for the macos versions they advertise HOT 6
- Support for memoryview and PickleBuffer HOT 17
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cramjam.