Fun with the Rust
Alloc trait: a custom
Vec implementation backed by elfmalloc
Ammonia, the HTML sanitizer that parses fragments the same way that browsers do, is getting a stable API. Please give feedback now, before a bunch of decisions get set in stone.
I'm working on a pet shell project in rust. It uses a lisp dialect for scripting: https://github.com/juanibiapina/lish
It is still in a very initial stage, but I want to replace zsh with it eventually.
A new Forum !
The project use rust, rocket, diesel, postgresql, and responsive design to build a new Forum.
Librsvg, the library for rendering [SVG] files used by GNOME and other Linux Desktop software, is using Rust in their current release. They’ve written up how the build system is integrated, how the FFI is done, how external libraries are handled, and basic information on doing Rust.
Other than needing to have a Rust compiler to build it, it should still feel exactly like a C program.
@ezrosent and I are happy to announce elfmalloc, a new allocator written in pure Rust!
This project actually involved a number of crates - 9 in total. They are all in this repository, and many are interesting on their own:
- bagpipe, a fast concurrent bag datastructure
- bsalloc, a simple “bootstrapping” allocator useful in implementing other allocators
- mmap-alloc, an allocator backed by direct mapping of memory pages
- malloc-bind, a utility to implement the C
mallocAPI in terms of a Rust allocator
- slab-alloc, an implementation of Jeff Bonwick’s slab allocator algorithm
- object-alloc, a trait for object allocators in Rust
- object-alloc-test, a test suite for object allocators including memory corruption detection
This project is still in its early phases, there is a lot of work to do, and we would love contributions! See CONTRIBUTING.md for details.
We’re gonna to be joined by not one, but two other Rust groups: Rome and Cambridge! Come join the 20 Rustaceans already signed up for this free event! https://www.meetup.com/Rust-London-User-Group/events/242378000/
Important changes/new features:
- A call to
joinable!is needed to indicate two tables can be joined. It is added automatically by
infer_schema!and is now part of the output of
- You can alias column names, e.g. to make them valid Rust identifiers (again, schema inference does this automatically for you by appending an underscore)
- Schema inference will now generate doc comments. You can get the same with output with
diesel print-schema --with-docs
- New type support: Decimal, Blob, and Datetime for MySQL, Range types for Postgres
More details in the changelog.
The official Rust FAQ needs some love. It hasn’t seen any serious updates since it initially launched, and it doesn’t cover a variety of areas that it should.
So, just like when the FAQ was first being worked on, we’re looking for suggestions for questions that should be added!
Please come share your ideas on the Rust user forum!
Updated cargo-bump to have an accurate README.md and some minor code edits to make my new best friend, Clippy, happy. If you find editing your Cargo.toml to increase version numbers tedious, then this is the cargo extension for you: https://crates.io/crates/cargo-bump
Yesterday was the last day of my Rust internship at Mozilla. I can hardly believe that twelve weeks have passed since I started, but my calendar insists.
Some weeks ago, I described Types as Contracts as an approach for how to go about defining Rust’s aliasing-related undefined behavior. One key property of this approach is that it is executable, which means we can actually have a program (in this case, miri tell us whether some particular Rust test case exhibits undefined behavior or not. I have since then spent most of my time completing and refining this implementation, and running it on miri’s test suite to exercise various bits of the standard library and see whether they are actually following the rules I have been suggesting.
This post is my report on what I found, and how the approach itself changed in response to these findings. It also explains how you can run miri yourself and have it check your code for undefined behavior according to this model. Finally, I discuss some of the things that I would like to look at going forward.