NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3590 most downloaded on crates.io
A plugin for assembling code at runtime. Combined with the runtime crate dynasmrt it can be used to write JIT compilers easily.
Last release 2 months ago
22 Jul 2026
Release timing varies
gaps range from 3 weeks to 1.7 years
Most releases are documented
notes for 31 of 43 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
43 releases · first in 2016
Move from proc-macro-error2 to proc-macro-error3, bump version to 5.1.0
Move from proc-macro-error2 to proc-macro-error3, bump version to 5.1.0
Add a test for adrp encoding and finalize release notes.
Add a test for adrp encoding and finalize release notes.
proc-macro-error2 to the maintained proc-macro-error3One column per quarter.
Fixes an issue for the x64 out instruction, where the format out imm8, ax accidentally didn't get a 16-bit operand size override prefix.
Fixes an issue for the x64 out instruction, where the format out imm8, ax accidentally didn't get a 16-bit operand size override prefix.
This bugfix release fixes a failure to compile the dynasmrt crate on non-unix RISC-V.
This bugfix release fixes a failure to compile the dynasmrt crate on non-unix RISC-V.
Edit release notes, and version to v4.0.0.
Edit release notes, and version to v4.0.0.
This release adds ergonomics improvements to dynamic registers. Where it was previously required to explicitly convert the type for dynamic registers as follows:
let dyn_reg = dynasmrt::x64::Rq::RAX;
dynasm!(ops
; add Rq(dyn_reg.into()), 5
);
This is no longer necessary. Instead, the conversion is now performed implicitly via Into<u8>.
let dyn_reg = dynasmrt::x64::Rq::RAX;
dynasm!(ops
; add Rq(dyn_reg), 5
);
Into<u8>. This significantly improves the ergonomics of using dynamic register values with custom wrapper types. Unfortunately, this might break code which already does this conversion explicitly, leading to an unknown type error. To remedy this, simply remove the explicit conversion.new_with_capacity method.Release notes and version bump for v3.2.1.
Release notes and version bump for v3.2.1.
Regenerate tests, update release notes, and bump version to 3.2.0.
Regenerate tests, update release notes, and bump version to 3.2.0.
Zfinx, Zhinx, Zdinx, Zhinxmin and Zfhmin instruction
set extensions.B collection of ISA EXTENSIONSZtso extension instead of it causing an error
(as it doesn't actually add any new instructions).Final polish of documentation, and version bump to v3.1.0
Final polish of documentation, and version bump to v3.1.0
This release adds support for several architectures from the RISC-V family of instruction sets.
These are riscv64i, riscv64e, riscv32i and riscv32e. There's also support for a large set
of instruction set extensions. This architecture support is introduced with the same standards as
currently supported targets, meaning that they come with full runtime support, immediate checking
and cache management support out of the box.
This architecture support has been sponsored by Wasmer.
riscv32i, riscv32e, riscv64i and riscv64e architecture targets.x64 gained support for the RDPRU instruction (Thanks to eigenform!).x64 immediate const evaluation now handles negative displacements properly again, generating 8-bit displacements where possible.
x64 immediate const evaluation now handles negative displacements properly again, generating
8-bit displacements where possible.Ensure examples don't fail to compile on aarch64 during testing, and …
Ensure examples don't fail to compile on aarch64 during testing, and …
This release brings significant improvements to the aarch64 experience. The runtime assemblers now
handle cache invalidation internally where necessary. Furthermore, where previously overly large
immediates would just wrap during encoding, they are now fully checked and error at compile time, or
panic at runtime. One major backwards compatibility break is that the syntax for data directives has
changed. This syntax now uses the relevant rust type names, and supports significantly more types.
Next to this, several long-standing bugs have been fixed, dependencies have been updated, and the
crate has moved to rust edition 2021. The minimum supported rust version is now 1.77.
1.77 to allow for the use of mem::offset_of!..u8, .i16, .f32 syntax.x64 gained support for the MOVDIRI instructionx64 gained support for the ZWORD operand size (needed for AVX512 support in the future)aarch64 assemblers now handle cache control internally. It is no longer needed for the user to handle this.aarch64 assembly are now fully size checked, where possible at compile time. Attempting to assemble an impossible immediate at runtime will cause a panic.mov w0, immu32 now expects a u32 as immediate instead of an u64.Several of these changes were the result of external contributions, we'd like to thank everyone who contributed to this release.
Be stricter on X/W or XSP/WSP differentiation in x64.
Bugfix the REPNE prefix so it can actually be used.
Fixes travis integration displayed in crates.io
Fixes travis integration displayed in crates.io
Fix overflow in aarch64 logical immediate encoding at runtime.
Runtime ------- - update memmap2 version.
Added missing label management methods to VecAssembler.
VecAssembler.Switched from the unmaintained memmap crate to memmap2.
memmap crate to memmap2.First release on rust stable (1.45+)!
Fixed an issue where calls to Modifier.extend would cause invalid code to be emitted.
Updated everything to the 2018 edition of rust.
filelocal feature and a nightly compiler.dynasm_backwards!, which emits templates in reverse order. This allows writing assemblers that compile code backwards.dynasmrt now re-exports the dynasm! macro from dynasm, so projects only need the dynasmrt dependency.Significant internal refactoring: Architectural support is now abstracted through the Relocation trait, that all assemblers are generic over. Aliases
SimpleAssembler.Remove a problematic semicolon that might cause errors in the future.
Fix a bug that caused emitted code corruption corruption in Aarch64's B and ADRP relocation calculations.
We now support an arbitrary offset added to any jump. This feature allows direct addressing of literal pools or arrays of values without generating la
Assembler::commit().Added Aarch64 support, thanks to sponsoring from Wasmer.
x64/x86: Always escape into SIB encoding with a displacement when a register is used as a memory reference base, to allow RBP to be encoded.
Fixed an issue where dynamic registers caused wrong code generation.
Fixed SETB and SETNB not being present in x64/x86
Nothing published for this version
Nothing published for this version
Nothing published for this version
Enabled relocation support in x64 when additional immediate fields are present.
Updates so it stays compatible with rustc as the plugin API changes.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Initial library experiments, starting with basic x64 support, refactoring to support multiple architectures, and cleanup.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →