Download the PHP package skunkwerkx/hypertabular without Composer

On this page you can find all versions of the php package skunkwerkx/hypertabular. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package hypertabular

HyperTabular

CI License: MIT crates.io NuGet Maven Central PyPI Go Reference Swift Package Gem Packagist

Delimited text — CSV, TSV, any single-byte ASCII separator — and workbooks — XLSX and ODS — read a batch at a time into typed columns, with a HyperCast verdict for every cell. Written once in Rust as a core with no standard library, no allocation and no panic, called directly from C#, Java, Go, Swift, Python, Ruby and PHP, with a shared conformance corpus so every binding agrees byte for byte.

Reading a spreadsheet or a CSV into typed values usually means one of two things: a library that guesses (the separator, the header, whether 1/7/2026 is January or July, whether 12.185 is a thousand or twelve) and throws on the first cell it cannot read, or a string per cell and a parser per cell in the host language. HyperTabular does neither. The dialect and the plan — which source column, through which HyperCast door, in which notation — are declared, and nothing is sniffed. A cell that does not cast is a verdict in its column, Empty, Malformed or OutOfRange with the span of the offending text, and the read goes on. And the work happens in one native call per batch: the binding allocates the column buffers once, the core fills them, and the boundary is crossed once per few thousand rows, not once per cell.

Install

Language Package
Rust cargo add hypertabular
C# dotnet add package HyperTabular
Java implementation("io.github.skunkwerkx:hypertabular:<version>")
Go go get github.com/SkunkWerkx/HyperTabular/go@latest
Swift .package(url: "https://github.com/SkunkWerkx/HyperTabular", from: "<version>")
Python pip install hypertabular
Ruby gem install hypertabular
PHP composer require skunkwerkx/hypertabular

Each brings HyperCast 0.8 with it: the verdict, fault, number-format and declared-option types a batch hands out are HyperCast's own, from its package, not copies.

The shape

The core, and what holds it

The crate is two layers. The core (rust/src/kernel) is what the native library libhypertabular is made of and what every binding calls: it reads bytes the caller hands it and writes into buffers the caller hands it. The Rust API over it, behind the default std feature, is one binding among eight. The core's three properties are things a build refuses to get wrong, and rust/check-core.sh checks every one on the code and on the library it becomes, on every pull request:

Property What makes it impossible to break quietly
No standard library The library is the core built with std off, and is checked again for a target that has no standard library at all (thumbv7em-none-eabi).
No allocation The crate never declares alloc, so Vec, Box and String cannot be named. The shared library's imports are held to an allow-list (memcpy, memset, memcmp/bcmp, memmove, abort, and getauxval on arm64 Linux to ask which CPU it is), and a counting allocator watches whole inputs go through the core in the test suite: the count is zero.
No panic Every export is declared through one macro that puts it under dtolnay's no-panic: the link fails, naming the export, if any panic path survives optimization. The proof is shown a canary export that can panic and has to reject it. That is why the core inflates with its own code — neither miniz_oxide nor zlib-rs passes the proof.
Nothing else linked in The dependency closure is HyperCast and nothing else, taken with its own exports off, so libhypertabular carries none of HyperCast's symbols and links beside libhypercast in one program.

The design record — why one repository, how the scanner and the workbook reader work, what was studied and borrowed — is in docs/.

Receipts

Platform support

.github/workflows/ci.yml builds the core fresh on five real-hardware legs and runs every binding's own suite, corpus replay included, against that leg's library; a second job does the same for the two musl RIDs inside Alpine containers, and Intel macOS is cross-built and tested at the core under Rosetta 2. The pipeline is the shared SkunkWerkx forge, the same one HyperCast and HyperUuid ship from.

Language linux-x64 linux-arm64 linux-musl-x64 linux-musl-arm64 osx-x64 osx-arm64 win-x64 win-arm64
Rust (core) ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
C# ✅ ✅ ✅ ✅ built ✅ ✅ ✅
Java ✅ ✅ ✅ ✅ built ✅ ✅ ✅
Go ✅ ✅ ✅ ✅ built ✅ ✅ ✅
Swift ✅ ✅ ✅ ✅ built ✅ ✅ ✅
Python ✅ ✅ ✅ ✅ built ✅ ✅ ✅
Ruby ✅ ✅ ✅ ✅ built ✅ ✅ ✅
PHP ✅ ✅ ✅ ✅ built ✅ ✅ —

Swift and Go link the core into the consumer's executable on every platform, so there is nothing to deploy beside it; C# does for a Native AOT publish. Everything else loads the shared library.

iOS and Mac Catalyst load no libraries at all, so C#, Swift and Go link the core into the app there, from static libraries cross-compiled in the same job as the rest: C# for ios-arm64, iossimulator-arm64, maccatalyst-arm64 and maccatalyst-x64, where a .NET iOS, MAUI or Mac Catalyst app (net11.0-ios, net11.0-maccatalyst) needs nothing but the package reference; Swift for the three arm64 ones, as an XCFramework, from iOS 16 and Mac Catalyst 16; and Go for all four, chosen by build tag, since Go builds every one of them as GOOS=ios. HyperCast's archives link beside them in the same app, and the two share no symbols. CI's test-apple-mobile job builds them on a Mac from that run's archives: C# and Swift run in an iOS simulator and as a Mac Catalyst process, Go's suite runs in the simulator, and each links an iOS device build.

Android, arm64 and x86_64, is reached by the same three bindings, so that a .NET MAUI app has the core on every platform MAUI targets and a Go or Swift Android build links it as on any other platform. C# carries a shared library cross-built with the NDK at API level 21, its segments aligned to the 16 KB pages Android 15 devices may use and Google Play requires: an app on CoreCLR, .NET 11's Android runtime, loads it out of the APK like any Linux library, and a Native AOT publish links it in from a static archive like every other RID. Go links its own pair of archives under GOOS=android with the NDK's clang, and Swift links them from its artifact bundle with the Swift SDK for Android (Swift 6.3+, API 28+). HyperCast reaches Android the same three ways, and its libraries sit beside these in the same app. CI's test-android job builds the C# app both ways for both RIDs from a package packed in that run, cross-builds the Go and Swift suites, runs everything x86_64 in an emulator whose image uses 16 KB pages, and links or inspects the arm64 builds. See swift/README.md.

Runtime floors follow upstream support and match HyperCast's: .NET 11, JDK 25, Go 1.26, Swift 6.2, Python 3.11, Ruby 3.3 and PHP 8.2. The crate's floor is Rust 1.88, HyperCast's own.

WebAssembly

The binding is compiled to WebAssembly and the core is linked into that build by the ecosystem's own toolchain — the same archive as everywhere else, built for wasm32. The core imports nothing (no clock, no entropy, no allocator: the caller's buffers are all the memory it touches), so a page loads one module and needs no shim beyond what the language already brings. Every browser row below runs in headless Chrome in CI: on every pull request, except Ruby's, whose ruby.wasm interpreter build per Ruby minor runs in the weekly and release builds instead. Java goes the other way: the core runs as wasm inside the JVM.

Binding WebAssembly
Rust Yes. The full suite passes under wasmtime on wasm32-wasip1, and rust/browser-test runs the crate on wasm32-unknown-unknown in Chrome. cargo wasm-staticlib builds the archive the bindings below link.
C# Yes, on .NET 11. dotnet add package HyperTabular into a Blazor WebAssembly project links the core beside HyperCast's through the package's .targets; csharp/HyperTabular.WasmSmokeTest proves it.
Go Yes, through TinyGo 0.42+. tinygo build -target=wasm (or wasip1) links staticlib/wasm; stock Go's wasm toolchain cannot link a C library.
Swift Yes, on Swift 6.2+. swift.org's WebAssembly SDK links the artifact bundle's wasm32-unknown-wasip1 archive; the result is a wasm32-wasip1 module, run in the browser through a WASI shim.
Python Yes, on Pyodide 314.x. await micropip.install("hypertabular") installs the ninth wheel (pyemscripten_2026_0_wasm32) and hypercast's; CI runs the whole pytest suite in Pyodide under Node and in Chrome.
Ruby Yes, through rbwasm build. List hypertabular-wasm instead of hypertabular in the Gemfile handed to ruby.wasm 2.10+ (Ruby 3.4 or 4.0): it carries the Magnus extension prebuilt for wasm32-wasip1 and shares the interpreter with hypercast-wasm.
Java In process, through GraalWasm. The jar bundles the core as a wasm32-wasip1 module; -Dhypertabular.backend=wasm selects it, and it is the automatic fallback where the jar has no native build. On GraalVM's JIT it reads the 300 000-row workbook in 1.9 s against 0.72 s native; on a stock JDK it runs interpreted. CI runs the whole suite through it on every leg. Compiling the binding itself to wasm is blocked: no Java-to-wasm compiler supports the Foreign Function & Memory API.
PHP Not built. There is no maintained wasm engine PHP can embed, and HyperCast's ext-php-rs spike for WordPress Playground is not shipped.

Arguments are kept to twelve integers or fewer on every export, because Mono's interpreter — which runs .NET in the browser — passes no more to a native function; the work buffers travel in one hypertabular_buffers struct instead.

Provenance

Every native library carries a GitHub build-provenance attestation from the forge's build, checked again before it is committed for Go, Swift and PHP (stage-native-binaries.yml) and before it is packed into a gem (release.yml). Packages signed inside this repository's own release.yml — the gem and the published NuGet package — verify with gh attestation verify <file> --repo SkunkWerkx/HyperTabular; everything signed by the forge's reusable workflows — the crate, the jar, the wheels, the pre-push NuGet package and every native library — needs --signer-repo SkunkWerkx/.github as well, or --owner SkunkWerkx in place of both.

Layout

Contributing

Pull requests and issues are welcome. .github/workflows/ci.yml builds and tests every binding on every platform — a PR should stay green there before merging. Locally, rust/check-core.sh is the core's proof and cargo test its suite; each binding's README says how to run its own.

License

MIT


All versions of hypertabular with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
ext-ffi Version *
skunkwerkx/hypercast Version ^0.7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package skunkwerkx/hypertabular contains the following files

Loading the files please wait ...