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

Download history 57/week @ 2024-07-27 2/week @ 2024-08-03 7/week @ 2024-09-21 34/week @ 2024-09-28 1/week @ 2024-10-05

108 downloads per month
Used in 3 crates

Apache-2.0

53KB
1K SLoC

Web bundles

build

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

crates.io

The core library. See the documentation.

webbundle-cli

crates.io

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

crates.io

The experimental web server which dynamically serves Web bundles from underlying resources.

webbundle-bench

crates.io

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 and http::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 a tar 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