R·U·S·T·M·A·X

News

RSS

Rustmax 0.0.10 Released

Rustmax 0.0.10 is released.

Eleven of the re-exported crates moved to a new major version.

Crate upgrades

  • base64 0.22 → 0.23
  • comrak 0.35 → 0.54
  • itertools 0.14 → 0.15
  • num-bigint 0.4 → 0.5
  • rand, rand_chacha, rand_pcg 0.9 → 0.10
  • rustyline 17 → 18
  • sha2 0.10 → 0.11
  • syn 2 → 3
  • tera 1 → 2
  • toml 0.9 → 1.1
  • zip 7 → 8

API rendering

The custom rustdoc renderer that produces the API documentation got a pass for correctness and speed.

Also

  • reqwest's stream feature is enabled in rmx-feature-more and rmx-feature-more-portable.
  • skim, a fuzzy finder, is on the tools radar.
  • The library books are rebuilt at their latest upstream commits.

Rustmax 0.0.9 Released

Rustmax 0.0.9 is released with 20 commits since 0.0.8.

Continuing to fill in the crate documentation backlog.

New crate documentation

Added doc pages with examples for 10 crates:

  • cfg-if - Conditional compilation macros
  • extension-trait - Inline extension trait definitions
  • json5 - JSON5 parser
  • libc - Raw FFI bindings to platform APIs
  • quote - Quasi-quoting for proc macros
  • rand_chacha - ChaCha random number generator
  • rand_pcg - PCG random number generator
  • rustyline - Readline-style line editing
  • socket2 - Low-level socket configuration

The rustmax template

The rustmax template — which I do use regularly — was broken in previous releases. Now it should work again with either

cargo generate brson/rustmax

or

rustmax new-project

Documentation and API doc fixes

A big round of crate documentation and API doc generator improvements. It's becoming more viable to use as a real doc tool.

New crate documentation and examples - Added doc pages for axum, tower, hyper, http, ctrlc, termcolor, and tera.

API doc generator fixes - Getting the custom rustdoc renderer to behave as expected and/or similar to rustdoc is a slog. And our implementation has grown organically: fix one link, break another. Complicated by my insistence on rendering fewer duplicate pages that rustdoc, so deciding where the "real" docs live and routing links correctly is tough.

Search improvements

Lots of search improvements since the initial launch last week.

Keyboard navigation - Arrow keys now move through search results and enter navigates to the selected result.

CLI search - rustmax search <query> runs the same search algorithm from the command line, outputting results as TOML. Running the CLI outside the repo mostly doesn't actually work though.

Better matching - The search algorithm and metadata is improved in many ways, and should be minimally useful now.

Other changes

  • Updated lockfile past cargo audit vulnerabilities in bytes and time crates
  • Enabled heading IDs in the rustmax-rustdoc markdown renderer, fixing broken anchor links
  • Updated template and guide examples to use profile-portable. It is my prefered default profile now.
  • Reorganized guide.md with usage first, reference lists last

New search feature

I've added the barest of search functionality.

The idea with Rustmax search is that is will be curated with topics related to Rustmax: crates, books and their chapters, standard library modules. Definitely not a full-text search like rustdoc; need to keep the index small.

Right now it only searches crates, books and standard library modules, by name or aliases.

I'll expand this basic search to be a bit more rich and robust with curated keywords etc; then augment it with things like function names, types, etc.

Rustmax 0.0.8 Released

Rustmax 0.0.8 is released with 73 commits since 0.0.7.

No new crates. Mostly releasing this to test hint-mostly-unused.

Since the previous release I've switched the API rendering to a custom rustdoc renderer. Now the website shares a consistent style between books, rustdocs, and website pages.

Graveyard additions

  • memoffset - Superseded by std::mem::offset_of!

Rustmax 0.0.7 Released

Rustmax 0.0.7 is released with 72 commits since 0.0.6.

New crates

Working on the backlog. These are all crates that I either use regularly or are the obvious crate for a common feature.

  • blake3 - Fast cryptographic hashing
  • comrak - CommonMark / GitHub-flavored Markdown parser
  • crossbeam - Concurrent programming utilities
  • ignore - Gitignore-style pattern matching
  • image - Image processing
  • indicatif - Terminal progress bars and spinners
  • memchr - Fast byte searching
  • mime - MIME types
  • notify - File system notifications
  • proptest - Property-based testing
  • url - URL parsing
  • zip - ZIP archive handling

Removed crates

  • Removed backtrace crate (use std::backtrace instead)
  • Removed num_cpus crate (use std::thread::available_parallelism instead)
  • Removed static_assertions crate

Other changes

rustmax new-project command - The CLI now supports scaffolding new projects configured for rustmax. This is basically the same as running cargo-generate brson/rustmax.

Custom book renderer - Replaced mdbook with a custom rmxbook renderer for documentation. This avoids mdbook version and plugin incompatibilites, as well as sidesteps all book-specific restyling issues: we just render every book however we want to, in a consistent style. Still needs lots of love to handle book-specific and plugin-related issues.

Faster Rustmax doctests - Rustmax now uses a custom test harness to test its crate examples. It's much faster than rustdoc for faster development.

WebSocket support - Axum WebSocket support is now enabled by default.

Other changes

  • Upgraded json5, reqwest, and rustyline to latest major versions
  • Fixed deprecated APIs in doc examples

Rustmax 0.0.6 Released

Rustmax 0.0.6 is released with 289 commits since 0.0.5.

Highlights

WASM profile - New rmx-profile-wasm feature enables a curated subset of crates compatible with WebAssembly targets. This is a nice baseline to use for projects that need wide platform compatibility, but more than just no-std.

Powerletters in prelude - The powerletters are now in their own crate and reexported. See the blog post, Powerletters for Rust.

Anthology - A new curated collection of classic Rust blog posts and articles, including "Abstraction Without Overhead", "Peeking Inside Trait Objects", and more. These subsume rust-anthology. A nascent project, not yet published to the website.

New crates

  • flate2 - DEFLATE compression/decompression
  • glob - Unix shell-style pattern matching

Breaking changes

  • Removed byteorder crate (use {integer}::from_le_bytes and friends instead)