13 unstable releases (4 breaking)
0.5.1 | Dec 5, 2022 |
---|---|
0.4.1 | Nov 30, 2022 |
0.3.2 | Jun 8, 2022 |
0.2.0 | Jan 18, 2022 |
0.1.3 | Mar 27, 2020 |
#834 in Parser implementations
108 downloads per month
Used in 3 crates
53KB
1K
SLoC
Web bundles
google/webbundle
is a project which aims to provide a high-performace library
and various tools for handling Web bundles format.
This is not an officially supported Google product.
Specification
Crates
There are several crates in the repository.
webbundle
The core library. See the documentation.
webbundle-cli
The command line tool for packaging resources as Web Bundles.
Installation
Archives of precompiled binaries for webbundle-cli
are available for Windows, macOS and Linux.
If you're using Rust, webbundle-cli
can be installed with cargo
.
cargo install webbundle-cli
Examples
The binary name for webbundle-cli
is webbundle
.
create
Create example.wbn
from the files under build/dist
directory. This is
similar to tar cvf example.tar build/dist
.
$ webbundle create example.wbn build/dist
list
List the contents of example.wbn
. This is similar to tar tvf example.tar
.
$ webbundle list ./example.wbn
extract
Extract the contents of example.wbn
. This is similar to tar xvf example.tar
.
$ webbundle extract ./example.wbn
See webbundle --help
for detail usage.
webbundle-server
The experimental web server which dynamically serves Web bundles from underlying resources.
webbundle-bench
The benchmark tool for measuring the browser's loading performance with Web bundles.
TODO
The development is at very early stage. There are many TODO items:
- Parser
- Support b2 format
- Encoder
- Support b2 format
- Web Bundles Builder
- Create a Web Bundle from a directory structure
- Low-level APIs to create and manipulate Web Bundle file
- Use
http::Request
,http::Response
andhttp::Uri
for better ergonomics - Use async/await to avoid blocking operations
- More CLI subcommands
-
create
-
list
-
extract
- Make these subcommands more ergonomics
-
- Focus the performance. Avoid copy as much as possible.
- Split this crate into several crates:
-
webbundle
: Core library -
webbundle-cli
: CLI, like atar
command -
webbundle-ffi
: Foreign function interface for C or C++ program, like a chromium. -
webbundle-server
: Experimental http server which can assemble and serve a webbundle dynamically, based on request parameters -
webbundle-wasm
: WebAssembly binding -
webbundle-bench
: The benchmark tool
-
Contributing
See contributing.md for instructions.
Dependencies
~1.8–9.5MB
~97K SLoC