Releases: garritfra/qbe-rs
Releases · garritfra/qbe-rs
v3.0.0
[3.0.0] - 2026-02-19
Added
- Add
NegandXorinstructions (#46)
Changed
- BREAKING:
Phiinstruction now acceptsVec(String, Value)to support multiple arguments (#48) - BREAKING: Support for opaque and union types (#39)
Internal
- Update Rust toolchain to 1.89 (#44)
Migrating from v2.x to v3.0.0
This version introduces potentially breaking changes.
Phi instruction
The Phi instruction now accepts a Vec<(String, Value)> instead of two fixed label-value pairs, allowing for any number of arguments:
// Before
Instr::Phi("ift".into(), Value::Const(2), "iff".into(), Value::Temporary("3".into()))
// After
Instr::Phi(vec![
("ift".into(), Value::Const(2)),
("iff".into(), Value::Temporary("3".into())),
])Aggregate types
Aggregate types now use a new TypeDef::Regular enum variant instead of the old TypeDef struct to allow for support of opaque and union types:
let my_aggregate_type = TypeDef {
name: "SomeType".into(),
align: None,
items: vec![(Type::Long, 1), (Type::Word, 2), (Type::Byte, 1)]
};
// Becomes
let my_aggregate_type = TypeDef::Regular {
ident: "SomeType".into(),
align: None,
items: vec![(Type::Long, 1), (Type::Word, 2), (Type::Byte, 1)]
};New Contributors
Full Changelog: v2.5.1...v3.0.0
v2.5.1
v2.5.0
[2.5.0] - 2025-04-14
Added
Fixed
- Correct size calculation for type definition (#33)
New Contributors
- @netfri25 made their first contribution in #33
- @prashantrahul141 made their first contribution in #34
Full Changelog: v2.4.0...v2.5.0
v2.4.0
[2.4.0] - 2025-02-28
Added
- Additional comparison operators: ordered (O), unordered (UO), and unsigned integer comparisons (Ult, Ule, Ugt, Uge)
- Bitwise shifting instructions:
Sar,Shr, andShl - Unsigned arithmetic instructions:
UdivandUrem - Type conversion instructions:
Castinstruction for converting between integers and floating points- Extension operations:
Extsw,Extuw,Extsh,Extuh,Extsb,Extub - Float precision conversion:
Exts,Truncd - Float-integer conversions:
Stosi,Stoui,Dtosi,Dtoui,Swtof,Uwtof,Sltof,Ultof
- Variadic function support with
VastartandVaarginstructions - Program termination instruction
Hlt - Thread-local storage support in
Linkagewith convenience constructors - Zero-initialized data support with
DataItem::Zero
Full Changelog: v2.3.1...v2.4.0
v2.3.1
[2.3.1] - 2025-02-28
Fixed
- Fixed type definition ordering in
Module::fmt::Displayto ensure type definitions appear before function definitions, which is required by QBE for aggregate types (#31).
New Contributors
Full Changelog: v2.3.0...v2.3.1
v2.3.0
[2.3.0] - 2025-01-13
Added
- New
Block::add_commentAPI to add comments inside blocks;Block::itemsis nowVec<BlockItem>instead ofVec<Statement>(#25). - New
Type::Zerofor internal zero-sized type representation. (#27) - Debug instruction support with
Instr::DbgFileandInstr::DbgLocfor source mapping. (#27)
Changed
- BREAKING: New field
Option<u64>insideInstr::Callto specify variadic arguments (#24).
New Contributors
Full Changelog: v2.2.0...v2.3.0
v2.2.0
What's Changed
- Change function args from
StringtoInto<String>by @icefoxen in #15 - build(deps): bump actions/checkout from 2 to 3 by @dependabot in #21
- build(deps): bump actions/checkout from 3 to 4 by @dependabot in #22
- Add unsigned and signed variants of sub-word types by @lleyton in #23
New Contributors
- @icefoxen made their first contribution in #15
- @dependabot made their first contribution in #21
- @lleyton made their first contribution in #23
Full Changelog: v2.1.0...v2.2.0
v2.1.0
v2.0.0
Changelog
Added
FunctionandDataDefnow have anewconstructorModulenow implements common traits (Debug,Clone,Eq,PartialEq,
Ord,PartialOrd,Hash,DefaultandCopy)
Changed
Module::add_function,Module::add_typeandModule::add_datanow consume
their corresponding structs, instead of constructing them
v1.0.0
Changelog
Added
- Data types now implement common traits (
Debug,Clone,Eq,PartialEq,
Ord,PartialOrd,Hash,DefaultandCopy) where applicable - Added
Linkagedata type (seeLinkage) - Added a
Moduledata type that houses functions and data definitions
Changed
- Remove
Qbeprefix from data structures.QbeValuebecomesqbe::Value - The
exportedflag of aFunctionhas been replaced withLinkage