Releases: xdslproject/xdsl
v0.66.0
Changes
xDSL framework
- core: (symbolTable) add symbol table lookup helper @shuaiting-li (#6156)
- core: (Constraints) remove deprecated methods from ConstraintContext @alexarice (#6153)
- core: (Constraints) add SizedConstraint @alexarice (#5739)
- core: (SymbolTable) add symbol visibility lookup helper @shuaiting-li (#6152)
- core: (Constraints) simplify AnyOf init @alexarice (#6106)
- core: (symbolTableCollection) add symbol table collection cache helper @shuaiting-li (#6143)
- core: (symbolTable) implement nearest symbol table helper @shuaiting-li (#6142)
- core: (PassPipeline) refactor callback @alexarice (#6135)
Dialects
- dialects: (riscv_scf, x86_scf) generate for loop body if missing @superlopuh (#6150)
- dialects: (x86) mov op is from GP to GP reg @superlopuh (#6149)
- dialects: (ub) Unreachable operator @mesham (#6148)
- dialects: (ub) Initial ub dialect with poison operator @mesham (#6146)
Continuous Integration
- installation: (pre-commit) remove pyproject-fmt pin @alexarice (#6147)
- CI: use per-commit checkout of llvm backend test @superlopuh (#6141)
Installation
- installation: (pre-commit) remove pyproject-fmt pin @alexarice (#6147)
Dependencies
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.16 @renovate[bot] (#6158)
- dependencies: update dependency ruff to v0.15.16 @renovate[bot] (#6157)
- dependencies: update astral-sh/setup-uv action to v8.2.0 @renovate[bot] (#6155)
- dependencies: update dependency pyright to v1.1.410 @renovate[bot] (#6151)
- dependencies: update dependency heir-py to v2026.6.1 @renovate[bot] (#6144)
- dependencies: lock file maintenance @renovate[bot] (#6145)
- dependencies: update pre-commit hook tox-dev/pyproject-fmt to v2.23.0 @renovate[bot] (#6138)
Miscellaneous
- core: (Constraints) remove deprecated methods from ConstraintContext @alexarice (#6153)
- core: (Constraints) simplify AnyOf init @alexarice (#6106)
Tool
- tools: (xdsl-opt) add time-passes argument @alexarice (#6136)
v0.65.0
Changes
xDSL framework
- core: (analysis) Implement LivenessAnalysis @jumerckx (#6129)
- core: (analysis) Add support for backwards dataflow analyses @jumerckx (#6128)
- core: Fix MLIR string-literal escape in the printer @mesham (#6130)
- core: Implement base functions for the symbol table helper @Saderfing (#6091)
- core: fix BaseAttr constraint exceptions for abstract bases @superlopuh (#6113)
- core: Add test for SymbolTable instanciation @Saderfing (#6100)
- core: handle dynamic dims in
ShapedType.strides_for_shape@superlopuh (#6096) - core: (Constraints) Enable better variable constraint inference. @ed741 (#6089)
- core: Add function to easily get symbol names @Saderfing (#6093)
- core: (Constraints) simplify unary AnyOf @alexarice (#6082)
- core: (Constraints) add IntAttrConstraint.get @alexarice (#6081)
Dialects
- dialects: (fir) Added missing attributes to FIR @mesham (#6134)
- dialects: (llvm) Stackrestore operation @mesham (#6122)
- dialects: (linalg) Add initial linalg tiling pass @Lishin1215 (#5842)
- dialects: (linalg) Add linalg tiling analysis helpers @Lishin1215 (#6125)
- dialects: (asm) add folding for to/from reg roundtrip @superlopuh (#6124)
- dialects: (asm) add verifiers for to/from reg ops @superlopuh (#6123)
- dialects: (llvm) add llvm.intr.vector.reduce.fadd and fmul ops @sueszli (#6110)
- dialects: (llvm) Stacksave operation @mesham (#6121)
- dialects: (asm) add asm dialect and to/from reg ops @superlopuh (#6116)
- dialects: (riscv) canonicalization pattern added (xor 0 = mv) @winterdeaf (#6105)
- dialects: (riscv) Generic LiOp @osmanyasar05 (#5737)
- dialects: (memref) Add memref subview result type inference @Lishin1215 (#6035)
- dialects: (builtin) Add MemRefType get_offset helper @Lishin1215 (#6098)
- dialects: (tensor) fix
tensor.padverifier for dynamic source dims @JosseVanDelm (#6090) - dialects: (wasmssa) Added WasmSSA Types @hhkit (#5818)
- dialects: (llvm) reject incompatible types in LLVMFunctionType @sueszli (#5705)
- dialects: (complex) add folding canonicalization pattern @radosavkrunic33 (#5497)
- dialects: (llvm) fix isinstance check for fast_math @sueszli (#6088)
- dialects: (llvm) add FLog2Op @sueszli (#5859)
- dialects: (llvm) add FCopySignOp @sueszli (#5864)
- dialects: (llvm) add FPowOp @sueszli (#5870)
- dialects: (llvm) add VectorFMinOp @sueszli (#5868)
- dialects: (llvm) add FCosOp @sueszli (#5858)
- dialects: (llvm) add FExp2Op @sueszli (#5867)
- dialects: (llvm) add FFloorOp @sueszli (#5860)
Transformations
- transformations: (convert-memref-to-riscv) use get_strides helper @superlopuh (#6095)
Backend
- backend: (llvm) add vector.reduce.fadd and fmul backend conversion @sueszli (#6120)
- backend: (llvm) extract intrinsic_suffix and declare_intrinsic helpers @sueszli (#6131)
- backend: remove riscemu target @superlopuh (#6111)
🗎 Documentation
- documentation: (toy) return riscemu interpretation output instead of printing @superlopuh (#6101)
- documentation: make toy a Python package installed in dev environments @superlopuh (#6104)
- documentation: format all marimo notebooks @superlopuh (#6099)
- documentation: Update outdated references in main README.md @naveen-seth (#6092)
🐛 Bug Fixes
- dialects: (tensor) fix
tensor.padverifier for dynamic source dims @JosseVanDelm (#6090)
Testing
- testing: add TestRegisterType to test dialect @superlopuh (#6112)
- testing: add test for riscemu emulation of Toy ch0 @superlopuh (#6108)
Continuous Integration
- CI: Enable RUF007 by using itertools.pairwise @KVLQLabs (#6119)
- CI: add a pyproject.toml formatter @superlopuh (#6107)
Dependencies
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.15 @renovate[bot] (#6133)
- dependencies: update dependency ruff to v0.15.15 @renovate[bot] (#6132)
- dependencies: don't specify version for dev dependency pytest-asyncio @superlopuh (#6127)
- dependencies: update dependency pytest-asyncio to v1.4.0 @renovate[bot] (#6126)
- dependencies: lock file maintenance @renovate[bot] (#6118)
- dependencies: move riscemu to toy dependencies @superlopuh (#6109)
- dependencies: update dependency ruff to v0.15.14 @renovate[bot] (#6102)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.14 @renovate[bot] (#6103)
- dependencies: update dependency heir-py to v2026.5.18 @renovate[bot] (#6097)
- dependencies: lock file maintenance @renovate[bot] (#6094)
- dependencies: update dependency ruff to v0.15.13 @renovate[bot] (#6083)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.13 @renovate[bot] (#6085)
v0.64.0
A delayed update, contains some important bug fixes and improvements, notably:
- raising errors on when setting operation fields (operands, results, attributes, properties, regions, successors), as these were broken since migrating to Python's (tnaks @ed741!).
- backend dialect operations now correctly declare memory effects both for main memory and registers when in allocated form
- Many more llvm op conversions and bug fixes (thanks @sueszli!)
- Introducing
.getclass method on constraints for optimisation on construction (thanks @alexarice!)
Changes
- core: (Operation) add Error on setting operands @ed741 (#6068)
- rewriting: add
insert_opfunctionality toinsert@alexarice (#6016) - dialects: (llvm) add CallIntrinsicOp backend converter and assembly format @sueszli (#5984)
- dialects: (llvm) add backend converter for UndefOp @sueszli (#5981)
xDSL framework
- core: (Constraints) ParamAttrConstraint to BaseAttr @alexarice (#6078)
- core: (Constraints) optimise ParamAttrConstraint of EqAttrConstraint @alexarice (#6077)
- core: (Constraints) add AnyOf.get @alexarice (#6076)
- core: (irdl) Fix region entry args verification @ed741 (#6070)
- core: (Constraints) add ParamAttrConstraint.get @alexarice (#6062)
- core: (Constraints) add VarConstraint.get @alexarice (#6067)
- core: (Constraints) restrict ParamAttrConstraint merging @alexarice (#6056)
- core: print deprecation warnings from xdsl-opt @superlopuh (#6055)
- core: (Constraints) remove deprecated ConstraintVar @alexarice (#6057)
- core: Printing and parsing support for bf16 @mesham (#6029)
- core: Simplified the parsing and printing of floats @mesham (#6039)
- core: MemoryEffect.get_effects returns AbstractSet @superlopuh (#6006)
- core: remove unnecessary type annotation @superlopuh (#5973)
- core: parse slash token in registered attr like mlir @n-io (#5950)
- core: parse slash token in unregistered attr like mlir @n-io (#5899)
- core: ban direct imports of utils implementations. @superlopuh (#5930)
Dialects
- dialects: use negated isinstance check for FastMathAttr @sueszli (#6079)
- dialects: (llvm) add FSinOp @sueszli (#5863)
- dialects: (llvm) add FExpOp @sueszli (#5857)
- dialects: (acc) Cleanup to remove is_optional_like and is_anchorable @mesham (#6075)
- dialects: (acc) DeclareAttr and DeclareActionAttr @mesham (#6072)
- dialects: (acc) RoutineInfoAttr and SpecializedRoutineInfoAttr @mesham (#6071)
- dialects: (polynomial) add polynomial ops @szerdick (#6023)
- dialects: (acc) Var name attribute @mesham (#6069)
- dialects: (fir) Add missing fields and operations @mesham (#6063)
- dialects: (acc) Atomic capture @mesham (#6061)
- dialects: (polynomial) add attributes @szerdick (#6022)
- dialects: (llvm) reject elementtype on function parameters @sueszli (#6060)
- dialects: (acc) Atomic update OpenACC operation @mesham (#6058)
- dialects: (acc) Atomic read and write operations @mesham (#6053)
- dialects: (acc) Kernel environment operation @mesham (#6048)
- dialects: (acc) Refactor WaitClause body logic into module level helpers @mesham (#6049)
- core: Printing and parsing support for bf16 @mesham (#6029)
- dialects: (arith) truncate bits when folding SignlessIntegerBinaryOperation @superlopuh (#6042)
- dialects: (polynomial) add polynomial dialect type @szerdick (#6021)
- dialects: (acc) Global constructor and destructor operations @mesham (#6036)
- dialects: (llvm) add llvm.intr.fma op and use it in the LLVM backend @sueszli (#6010)
- dialects: (riscv_snitch) use RegisterAllocatedMemoryEffect @superlopuh (#6033)
- dialects: (acc) Routine OpenACC operation @mesham (#6019)
- dialects: (riscv) all instructions have RegisterAllocatedMemoryEffect @superlopuh (#6032)
- dialects: (riscv_snitch) add read/write effect traits @superlopuh (#6025)
- dialects: (x86) only instructions have RegisterAllocatedMemoryEffect @superlopuh (#6026)
- dialects: (wasmssa) Added WasmSSA dialect @hhkit (#6030)
- dialects: (riscv_func) add RiscvFunctionCallMemoryEffect @superlopuh (#6027)
- dialects: (riscv) add read/write effect traits @superlopuh (#6024)
- dialects: (acc) Set and Wait OpenACC operations @mesham (#6018)
- dialects: (acc) Init and Shutdown OpenACC runtime operations @mesham (#6017)
- dialects: (x86, riscv) fix clashing memory effects declarations @superlopuh (#6013)
- dialects: (acc) Loop operation @mesham (#6008)
- dialects: (riscv_debug) printf has a write effect @superlopuh (#6005)
- dialects: (acc) Add GangArgType and CombinedConstructsType Attributes @mesham (#6007)
- dialects: (acc) Declare family of operations @mesham (#6001)
- dialects: (acc) exit_data and update OpenACC operations @mesham (#5999)
- dialects: (acc) Add EnterData OpenACC operation @mesham (#5994)
- dialects: (llvm) remove stale TODO on CallOp @sueszli (#5996)
- dialects: (riscv_scf, x86_scf) use RecursiveMemoryEffect @superlopuh (#5995)
- dialects: (acc) OpenACC data operations @mesham (#5993)
- dialects: (llvm) add ShuffleVectorOp with backend converter @sueszli (#5985)
- dialects: (acc) Kernel operation has terminator operation as implicit terminator @mesham (#5992)
- dialects: (llvm) add InsertElementOp with backend converter @sueszli (#5983)
- dialects: (acc) Add OpenACC terminator operation @mesham (#5990)
- dialects: (acc) OpenACC data privatization operations @mesham (#5989)
- dialects: (acc) Replaced bespoke parsing of lists to parser's helper method @mesham (#5988)
- dialects: (acc) Extend data entry operation base class to have custom assembly syntax @mesham (#5978)
- dialects: (riscv_scf) infer constant step in linalg-snitch backend @superlopuh (#5952)
- dialects: (llvm) fix ConstantOp parsing of zero-valued attributes @sueszli (#5975)
- dialects: (acc) Support for OpenACC ReductionRecipe operation @mesham (#5974)
- dialects: (llvm) custom print/parse for call_intrinsic @sueszli (#5938)
- dialects: (acc) Private recipe and firstprivate recipe OpenACC operations @mesham (#5972)
- dialects: (acc) Reduction recipe kind attribute @mesham (#5971)
- dialects: (llvm) custom print/parse for global @sueszli (#5948)
- dialects: (llvm) custom print/parse for inline_asm @sueszli (#5947)
- dialects: (acc) Add data exit delete and detach OpenACC operations @mesham (#5967)
- dialects: (acc) OpenACC copyout update_host data exit clauses @mesham (#5962)
- dialects: (acc) Full data entry clause family of operations @mesham (#5957)
- dialects: (riscv_scf) allow constant value for step @superlopuh (#5954)
- dialects: (llvm) custom print/parse for call @sueszli (#5946)
- dialects: (acc) OpenACC data entry clause operations @mesham (#5956)
- dialects: (acc) Attributes to support data clause operations @mesham (#5953)
- dialects: (llvm) add parse_optional_keyword_in helper @sueszli (#5949)
- dialects: (linalg) Split linalg.py into init.py and ops.py @Lishin1215 (#5925)
- dialects: (acc) OpenACC bounds infrastructure @mesham (#5945)
- dialects: (acc) OpenACC kernels operation support @mesham (#5942)
- dialects: (acc) Support for OpenACC serial operation @mesham (#5931)
- dialects: (acc) Add OpenACC WaitClause to parallel op @mesham (#5926)
- dialects: (csl, csl_wrapper, csl_stencil) move to dialects folder @superlopuh (#5928)
- dialects: (acc) Added DeviceTypeOperandsWithKeywordOnly directive for async clause syntax @mesham (#5924)
- dialects: (llvm) custom print/parse for pointer subset and value ops @sueszli (#5908)
- dialects: (llvm) add FCeilOp @sueszli (#5861)
- dialects: (acc) Add support for NumGangs to OpenACC ParallelOp @mesham (#5923)
- dialects: (acc) Add custom assembly format for parallel op @mesham (#5922)
Transformations
- transformations: (canonicalize) enable folding @superlopuh (#6054)
- transformations: (convert-ptr-to-riscv) enable dce @superlopuh (#6046)
- transformations: (convert-memref-to-riscv) enable dce @superlopuh (#6045)
- transformations: elide RemoveUnusedOperations when folding greedily @superlopuh (#6043)
- transformations: (convert-func-to-x86-func) don't insert directives @superlopuh (#6015)
- transformations: (convert-arith-to-riscv-snitch) enable dce @superlopuh (#6004)
- transformations: (convert-arith-to-riscv) enable dce @superlopuh (#6003)
- transformations: (riscv-scf-loop-range-folding) handle constant steps @superlopuh (#5966)
- transformations: (convert-riscv-scf-for-to-frep) improve comments positioning [NFC] @superlopuh (#5958)
- transformations: (riscv-scf-for-infer-constant-step) add pass @superlopuh (#5959)
- transformations: handle constant step in riscv_scf lowering passes @superlopuh (#5961)
Backend
- backend: use RegisterAllocatedMemoryEffect for all_used_registers @superlopuh (#6041)
- backend: (llvm) replace vector.broadcast with pure LLVM ops @sueszli (#6038)
- dialects: (llvm) add llvm.intr.fma op and use it in the LLVM backend @sueszli (#6010)
- backend: add API to declare registers to exclude for regalloc @superlopuh (#6002)
- backend: (x86) dce when converting arith and vector to x86 @superlopuh (#5998)
- backend: all used regs within region is a set instead of iterable @superlopuh (#5997)
- backend: (llvm) set addrspace from source type when building typed pointers @sueszli (#5909)
- x86 legalize: cardinality preservation is in fact not a requirement @qaco (#5494)
- backend: (llvm) remove @cache from convert_type @sueszli (#5933)
Benchmarking
- bench: fix LLVM backend benchmark and add CI smoke test @sueszli (#5987)
- bench: defer llvmlite import in LLVM backend benchmark @sueszli (#5976)
- bench: add CI to validate benchmark imports @sueszli (#5965)
- bench: fix LLVM backend benchmark for ASV discovery @sueszli (#5960)
- bench: add LLVM backend conversion benchmark @sueszli (#5936)
🗎 Documentation
v0.63.0
Changes
Dialects
- dialects: (acc) Extend parallel op to include properties @mesham (#5916)
- dialects: (acc) Initial OpenACC dialect with parallel and yield @mesham (#5914)
- dialects: (fir) Updates to experimental fir and hlfir dialects for llvm 22.1.2 @mesham (#5913)
- dialects: (omp) Add missing collapse_num_loops property @mesham (#5911)
- dialects: (llvm) drop NullOp and add custom formats @sueszli (#5881)
- dialects: (llvm) include expected/found op names in CallOp verify error @sueszli (#5894)
- dialects: (x86) add kmov ops @superlopuh (#5877)
- dialects: (llvm) verify CallOp callee is a declared FuncOp @sueszli (#5849)
- dialects: (riscv_snitch) add recursive memory effects to frep @superlopuh (#5885)
- dialects: (riscv_snitch) leverage register effects in riscv_snitch @superlopuh (#5884)
- dialects: (riscv_snitch) factor out is_valid_frep_body_op helper @superlopuh (#5883)
Transformations
- transformations: (convert-memref-to-ptr) support dynamic dimensions @sueszli (#5847)
- transformations: (convert_arith_to_riscv_snitch) add vfsubh, vfsubs lowering @szerdick (#5854)
- transformations: (convert-memref-to-ptr) rename get_* helpers to build_* @sueszli (#5856)
Backend
- backend: (llvm) translate llvm.* arg attrs in convert_module @sueszli (#5850)
- backend: (llvm) only pass fastmath to calls returning a float @sueszli (#5878)
- backend: (llvm) convert llvm.mlir.zero instead of llvm.mlir.null @sueszli (#5879)
- backend: (llvm) add ConstantOp conversion @sueszli (#5833)
- backend: (llvm) add vector.BroadcastOp conversion @sueszli (#5829)
🗎 Documentation
- documentation: (marimo) remove navigation from embedded notebooks @claudiotancredi (#5880)
- documentation: (CONTRIBUTING) prefer op.name over op.properties["name"] @sueszli (#5874)
Testing
- testing: use only float ops in frep bodies in tests [NFC] @superlopuh (#5889)
- testing: (inline-snrt) move around test lines [NFC] @superlopuh (#5887)
Continuous Integration
- CI: (precommit) generate type stubs before running ruff @sueszli (#5875)
- CI: use uv cache consistently in CI jobs @superlopuh (#5871)
- CI: add pre-commit hook to format yaml files with prettier @superlopuh (#5872)
Dependencies
- dependencies: update dependency pyright to v1.1.409 @renovate[bot] (#5915)
- dependencies: lock file maintenance @renovate[bot] (#5895)
- dependencies: update astral-sh/setup-uv action to v8.1.0 @renovate[bot] (#5888)
- dependencies: replace astral-sh/setup-uv action with astral-sh/setup-uv v8.0.0 @renovate[bot] (#5886)
- dependencies: update actions/cache action to v5 @renovate[bot] (#5873)
v0.62.1
Changes
Dialects
- dialects: (riscv_snitch) add vfsubh and vfsubs @szerdick (#5821)
- dialects: (llvm) narrow ConstantOp value prop @sueszli (#5839)
- dialects: (llvm) add FSqrtOp @sueszli (#5823)
- dialects: (tensor) add init to FromElementsOp @superlopuh (#5826)
- dialects: (llvm) add BrOp @sueszli (#5822)
- dialects: (llvm) add FLogOp @sueszli (#5824)
- dialects: (llvm) add VectorFMaxOp @sueszli (#5825)
Transformations
- transformations: (convert-memref-to-ptr) factor out get_strides helper @sueszli (#5834)
- transformations: (convert-memref-to-ptr) handle non-zero offsets in reinterpret cast @sueszli (#5832)
- transformations: (expand_math_to_polynomials) add terms parameter to exp @szerdick (#5793)
Backend
- backend: (llvm) support forward references in convert_module @sueszli (#5848)
- backend: (llvm) add AddressOfOp conversion @sueszli (#5830)
- backend: preserve LLVM pointer address spaces in type conversion @sueszli (#5840)
- backend: (llvm) add target config to convert_module @sueszli (#5837)
- backend: add llvm.NullOp conversion @sueszli (#5827)
- backend: (llvm) add vector.FMAOp conversion @sueszli (#5828)
- backend: (riscv) handle dense constants @szerdick (#5799)
🗎 Documentation
- documentation: Fix print for listlang booleans in marimo notebooks @naveen-seth (#5841)
- documentation: updated reference to currently pinned LLVM version @hhkit (#5819)
Testing
- testing: add tests for marimo notebooks @superlopuh (#5843)
- testing: (test_lower_linalg_to_snitch) expand-math-to-polynomials to snitch pipeline @szerdick (#5798)
Dependencies
- dependencies: update astral-sh/setup-uv action to v8.1.0 @renovate[bot] (#5853)
- dependencies: update dependency ruff to v0.15.11 @renovate[bot] (#5816)
- dependencies: update astral-sh/setup-uv action to v8 @renovate[bot] (#5846)
- dependencies: update actions/upload-pages-artifact action to v5 @renovate[bot] (#5836)
- dependencies: lock file maintenance @renovate[bot] (#5835)
v0.62.0
Updates the corresponding LLVM version to v22, if you use xDSL to interoperate with MLIR, please be advised that you may need to update your MLIR version for seamless interop.
Changes
Dependencies
- dependencies: update ghcr.io/xdslproject/llvm docker tag to v22 @renovate[bot] (#5769)
v0.61.0
Some breaking changes to BitEnumAttribute in preparation for the upcoming bump of corresponding LLVM version to 22.
Changes
xDSL framework
- core: BitEnumAttribute with customizable delimiter value @hhkit (#5814)
- core: moved BitEnumAttribute from core to dialect.utils @hhkit (#5813)
- core: BitEnumAttribute to support alternate flag separators @hhkit (#5805)
- core: added parse_list to GenericParser with support for changing separator @hhkit (#5800)
Dialects
- dialects: (x86) add support for 32, 16, and 8-bit gp registers @superlopuh (#5811)
- dialects: (linalg) Make linalg.transpose into a structured op @Lishin1215 (#5812)
- dialects: (tensor) Add tensor.concat op @ed741 (#5790)
- dialects: (x86) add masked variants of vector move ops @superlopuh (#5807)
- dialects: (x86) wrap memory operands in assembly-like brackets @superlopuh (#5804)
Transformations
- transformations: (convert-pdl-to-pdl-interp) fix recursiondepth exception @jumerckx (#5809)
- transformations: (convert-pdl-to-pdl-interp) Put individual matchers in a single pdl_interp.func @jumerckx (#5803)
Backend
- backend: add register pools for aliasing registers, use in x86 @superlopuh (#5806)
Dependencies
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.10 @renovate[bot] (#5817)
- dependencies: update dependency marimo to >=0.23,<0.24 [security] @renovate[bot] (#5815)
- dependencies: lock file maintenance @renovate[bot] (#5810)
v0.60.0
Changes
- core: change BitEnumAttribute internal data to use frozenset @hhkit (#5796)
- backend: (riscv) propagate register width to move helpers @szerdick (#5779)
- dialects: (stencil) Add reduce and yield operations @Archii0 (#5784)
xDSL framework
- core: simplified parser implementation in BitEnumAttribute @hhkit (#5792)
- core: migrate xdsl-opt targets to Multiverse @superlopuh (#5702)
Frontend
- frontend: add support for bool/int/float literals @AlexanderViand (#5217)
Dialects
- dialects: (stim) add measurement and reset operations @cong-or (#5788)
- dialects: (stim) add two-qubit gate operations @cong-or (#5787)
- dialects: (DimOp) Add assembly format for dim @Lishin1215 (#5780)
- dialects: (stim) add single-qubit gate operations @cong-or (#5786)
- dialects: (stim) allow NAME regex to match single-character names @cong-or (#5785)
- dialects: (memref) alignment must be power of 2 @superlopuh (#5773)
- dialects: (memref) add custom syntax to memref.alloca @superlopuh (#5772)
- dialects: (riscv_snitch) add vfmulh @szerdick (#5770)
- dialects: (x86) remove LabelAttr and migrate to StringAttr @superlopuh (#5762)
- dialects: (x86) move non-jump ops to custom format @superlopuh (#5743)
Transformations
- transformations: (convert_linalg_to_loops) Lower linalg.index to loop variables @Lishin1215 (#5797)
- transformations: (convert_linalg_to_loops) Support dynamic loop bounds @Lishin1215 (#5768)
- transformations: (convert-arith-to-riscv-snitch) support vec mul @szerdick (#5771)
- transformations: (linalg) Only pass SSAValue to rewrite_linalg_structured_to_loops @Lishin1215 (#5774)
- transforms: (math) Convert exp to Taylor series without division @szerdick (#5764)
- transformations: (convert-pdl-to-pdl-interp) Add an option to lower patterns as individual matcher functions @jumerckx (#5765)
- transformations: (convert_linalg_to_loops) Extend convert-linalg-to-loops to lower LinalgStructuredOperation @Lishin1215 (#5756)
Backend
- backend: add RegisterNameSpec and add as optional arg to reg @superlopuh (#5738)
Interpreter
Continuous Integration
- CI: add git directory as safe for setuptools_vcs step in ci-mlir @superlopuh (#5781)
Dependencies
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.9 @renovate[bot] (#5802)
- dependencies: update dependency ruff to v0.15.9 @renovate[bot] (#5801)
- dependencies: update dependency marimo to >=0.22,<0.23 @renovate[bot] (#5795)
- dependencies: update dependency llvmlite to ~=0.47.0 @renovate[bot] (#5794)
- dependencies: lock file maintenance @renovate[bot] (#5789)
- dependencies: update dependency ruff to v0.15.8 @renovate[bot] (#5783)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.8 @renovate[bot] (#5751)
- dependencies: update actions/deploy-pages action to v5 @renovate[bot] (#5776)
- dependencies: update davidanson/markdownlint-cli2-action action to v23 @renovate[bot] (#5777)
- dependencies: lock file maintenance @renovate[bot] (#5766)
- dependencies: update dependency marimo to >=0.21,<0.22 @renovate[bot] (#5748)
- dependencies: update release-drafter/release-drafter action to v7 @renovate[bot] (#5761)
- dependencies: update j178/prek-action action to v2 @renovate[bot] (#5759)
- dependencies: update jakebailey/pyright-action action to v3 @renovate[bot] (#5760)
- dependencies: update davidanson/markdownlint-cli2-action action to v22 @renovate[bot] (#5753)
- dependencies: update dependency textual to v8 @renovate[bot] (#5755)
- dependencies: update dependency pytest to v9 @renovate[bot] (#5754)
- dependencies: update actions/checkout action to v6 @renovate[bot] (#5752)
- dependencies: update dependency ruff to v0.15.7 @renovate[bot] (#5750)
- dependencies: update dependency pyright to v1.1.408 @renovate[bot] (#5746)
- dependencies: update dependency immutabledict to <4.3.2 @renovate[bot] (#5747)
- dependencies: update dependency pytest-asyncio to v1.3.0 @renovate[bot] (#5749)
v0.59.0
This is a release with one change, which is fairly mechanical but required a bit of work to update the tests for. With this change, block arguments (which includes function arguments) don't insert a space after the SSAValue name and the :.
Before:
func.func @foo(%arg0 : i32, %arg1 : i64) {
After:
func.func @foo(%arg0: i32, %arg1: i64) {
Changes
xDSL framework
- core: don't insert space between block arguments and colons @superlopuh (#5745)
v0.58.0
Targets can now be added to Universes, meaning that xdsl-opt -t can be used to emit text by projects in the same Python environment.
Changes
xDSL framework
- core: add targets to multiverse @superlopuh (#5736)
- core: (Constraints) allow
of_lengthto take an int @alexarice (#5734) - core: Print locations for ops in custom assembly format @ZahidWakeel-synthara (#5724)
- core: Propagate block arg locations in func like ops @ZahidWakeel-synthara (#5732)
- core: add Target class and support in xdsl-opt @superlopuh (#5730)
- core: factor out arg spec logic from ModulePass @superlopuh (#5722)
Dialects
- dialects: (stencil) Deprecate get constructors @Archii0 (#5741)
- dialect: (riscv) add folding patterns for shift ops @osmanyasar05 (#5656)
- dialects: (x86) use
reghelper in x86 assembly printing @superlopuh (#5735) - dialects: (tensor) Fixed nofold attr to optional arg @liamsemeria (#5727)
- dialects: (linalg) Make get_indexing_maps return ArrayAttr and add get_default_indexing_maps @Lishin1215 (#5728)
- dialects: (llvm) add CondBr @sueszli (#5710)
- dialects: (llvm) Fix GEP index validation and MaskedStoreOp operand constraints @sueszli (#5729)
- dialects: (llvm) add FCmpOp @sueszli (#5706)
Transformations
- transformations: (linalg-generalize-named-ops) Generalize named ops to linalg.generic @Lishin1215 (#5726)
🐛 Bug Fixes
Dependencies
- dependencies: lock file maintenance @renovate[bot] (#5733)