Releases: google/heir
Releases · google/heir
nightly
fix: fix lwe-to-lattigo for preprocessing funcs w/ no args When there are no crypto arguments, the preprocessing function won't have params/encoder added, so this fixes that. It updates the legality condition on the call op to match with the func op signature, which makes it a lot cleaner to deduce legality than checking for which evaluators are needed in the callsite. PiperOrigin-RevId: 874222580
v2026.02.01
What's Changed
- Upgrade GitHub Actions for Node 24 compatibility by @salmanmkc in #2467
- migrate pocketfft and cereal to MODULE.bazel by @j2kun in #2470
- Add a faster heuristic for IntegerRelation::isEqual by @j2kun in #2505
- fix: loosen tolerance on polynomial eval fuzz test by @copybara-service[bot] in #2503
- rework community page, add bookable slots by @copybara-service[bot] in #2508
- fix: fix bootstrap insertion pattern for CKKS by @copybara-service[bot] in #2511
- Bump the pip group across 2 directories with 4 updates by @dependabot[bot] in #2512
- Issue #202 : Add tensor shape to polynomial mod function name by @TomiAkeju in #2502
- Use opaque ciphertext/plaintext type for openfhe by @copybara-service[bot] in #2471
- Replace unicode escaped characters in ipynb files by @copybara-service[bot] in #2518
- add openfhe benchmarks for fast rotations by @asraa in #2524
- bump rust dependencies by @j2kun in #2528
- Add in-place OpenFHE ops and in-place transform by @copybara-service[bot] in #2520
- migrate llvm dependency to bazelmod by @j2kun in #2472
- Peel first iteration of loops with ciphertext iter-args (Halo Solution A-1) by @j2kun in #2534
- Bootstrap loop iter args (Halo Solution A-2) by @j2kun in #2536
- Rewrite level analysis for loop support by @j2kun in #2551
- add AI tool use policy by @copybara-service[bot] in #2530
- pre-commit: use python3 instead of python by @AlexanderViand in #2547
- make README example also work with pypi version by @AlexanderViand in #2562
- frontend: use signed extension when changing bitwidth by @AlexanderViand in #2546
- support parallelization in openfhe targets by @copybara-service[bot] in #2535
- split-preprocessing: handle plaintext function arguments that have layouts assigned by @copybara-service[bot] in #2563
- Upgrade GitHub Actions for Node 24 compatibility by @salmanmkc in #2567
- make ai tool use policy page visible by @j2kun in #2566
- Frontend literal upcasting by @AlexanderViand in #2552
- Partially unrolling loops for better level consumption (Halo B-2) by @j2kun in #2538
- Migrate OpenFHE to bazelmod by @j2kun in #2548
- Optimisation: Extend the Lut generation to LUT4 elements by @WoutLegiest in #2458
- fix build by @copybara-service[bot] in #2573
- bazelrc: update openfhe flags to bzlmod version by @AlexanderViand in #2576
- openfhe: use openfhe API GetBootstrapDepth to get actual bootstrap depth by @copybara-service[bot] in #2578
- layout: generate packing functions for tensor_ext.assign_layout lowerings by @copybara-service[bot] in #2569
- remove linalgDetensorize and some other lingering tosa stuff by @copybara-service[bot] in #2582
- Add primitive root calculator based on sympy by @copybara-service[bot] in #2583
- range analysis: propagate state on plaintexts operations by @copybara-service[bot] in #2584
- openfhe: support multiple function return types in emitter by @copybara-service[bot] in #2585
New Contributors
- @TomiAkeju made their first contribution in #2502
Full Changelog: v2026.01.01...v2026.02.01
v2026.01.01
What's Changed
- support dense resources in openfhe pke emitter by @j2kun in #2465
- layout: ensure code-genned cmpi has agreeing arg types by @j2kun in #2469
- Upgrade GitHub Actions to latest versions by @salmanmkc in #2468
- Fix pypa/gh-action-pypi-publish version to use SHA pinning by @salmanmkc in #2473
- test: add LeNet MNIST CNN model e2e test by @copybara-service[bot] in #2475
- Migrates
builder.create<Op>()=>Op::create()in tablegen files by @copybara-service[bot] in #2490
New Contributors
- @salmanmkc made their first contribution in #2468
Full Changelog: v2025.12.11...v2026.01.01
v2025.12.11
What's Changed
- fix: fix openfhe e2e 2-d conv test by @copybara-service[bot] in #2433
- add openfhe ckks rotom chained_matmul test by @edwjchen in #2432
- OpenFHE interpreter overhead reduction (lenet example) by @j2kun in #2445
- Convert orion to lattigo by @j2kun in #2431
- remove deprecated rewriter.create calls by @copybara-service[bot] in #2452
- linalg: ensure linalg.generic attrs are preserved in GenericToElementwise transform by @copybara-service[bot] in #2459
- performance: skip over any zero diagonal rows in a 2-D conv by @copybara-service[bot] in #2460
- add binaries (heir-opt etc) to monthly releases by @copybara-service[bot] in #2461
New Contributors
Full Changelog: v2025.12.01...v2025.12.11
v2025.12.01
What's Changed
- add pass to forward values to tensor.extract_slice by @copybara-service[bot] in #2367
- update lockfile by @j2kun in #2373
- enable layout propagation for tensor.extract_slice by @copybara-service[bot] in #2353
- implement-shift-network: de-dupe ctslot mappings to targets by @copybara-service[bot] in #2354
- ckks: support tensor.insert_slice and tensor.extract_slice in secret-to-ckks by @copybara-service[bot] in #2374
- Docs add test example by @isabelfaulds in #2377
- Add fuzz testing framework by @j2kun in #2196
- Add BSGS support for bicyclic matmul by @j2kun in #2366
- secret: allow plaintext linalg ops to be hoisted out of secret.generic by @copybara-service[bot] in #2390
- secret-to-ckks: support arith.divf by a plaintext by @copybara-service[bot] in #2393
- Replace some uses of
return failure()withnotifyMatchFailureby @j2kun in #2382 - Add bicyclic matmul to layout pipeline by @j2kun in #2360
- Refactor other lower-polynomial-eval methods to use ArithmeticDag, drop small coeffs by @j2kun in #2167
- Modified BSGS implementation to address #2162 for suboptimal implementation of BSGS choices by @j2kun in #2392
- migrate some rules_hdl deps to BCR equivalents with better macos support by @j2kun in #2406
- Address performance of secret-insert-mgmt passes by @j2kun in #2391
- #2388 - added tricyclic batch ctct matmul by @rishabhjain1712 in #2399
- Add type inference for LWE/CKKS ops by @j2kun in #2412
- Follow up Remove Tensor from CGGI: Update the Emitters and tests by @WoutLegiest in #2278
- CKKS: Use prime selection logic from OpenFHE by @ZenithalHourlyRate in #2402
- Improve Chebyshev Paterson-Stockmeyer evaluation by @j2kun in #2411
- Add timing table to interpreter mode by @j2kun in #2423
- internal change by @copybara-service[bot] in #2426
- migrate some bazel rules to MODULE.bazel, bump some versions by @j2kun in #2419
- Bump golang.org/x/crypto from 0.35.0 to 0.45.0 in the go_modules group across 1 directory by @dependabot[bot] in #2427
- add openfhe benchmark binary by @j2kun in #2425
- fix: openfhe interpreter fails to update SSA values in loops by @copybara-service[bot] in #2428
- add canonicalization pattern for sigmoid operation by @copybara-service[bot] in #2396
- fix benchmark copybara transform by @copybara-service[bot] in #2430
New Contributors
- @isabelfaulds made their first contribution in #2377
- @rishabhjain1712 made their first contribution in #2399
Full Changelog: v2025.11.01...v2025.12.01
v2025.11.01
What's Changed
- Make BGV/CKKS ops elementwise-mappable, and add ElementwiseByOperandOpInterface by @j2kun in #2277
- Update plaintext tests by @Time0o in #2245
- Add insert/extract slice to noise analysis by @j2kun in #2273
- Remove AutoHog from HEIR by @copybara-service[bot] in #2287
- blog post for 2025-10-02 HEIR meeting by @copybara-service[bot] in #2286
- Run Vos-Vos-Erkin with multiple random shift orderings by @Time0o in #2271
- ensure debug helper fn can be linked properly by @copybara-service[bot] in #2288
- add extract_slice_of_splat pattern by @j2kun in #2290
- Generalize tensor_ext_to_tensor to support dynamic and multidimensional rotate ops by @j2kun in #2291
- rewrite
linalg.pooling_nchw_sumaslinalg.conv_2d_nchw_fchw. by @copybara-service[bot] in #2279 - Remove old layout code by @j2kun in #2199
- Remove ckks.extract by @j2kun in #2302
- lockfile update by @j2kun in #2300
- [NFC] rename 'NewLayout' to Layout in its various forms by @j2kun in #2299
- [NFC]: Rename
tensor_ext.permutetotensor_ext.remapby @j2kun in #2301 - fix bug in conv2d layout by @j2kun in #2307
- remove redundant pattern by @copybara-service[bot] in #2308
- linalg canonicalizations and drop unit dims enhancements by @copybara-service[bot] in #2283
- relu-canonicalizations: add pass to rewrite select(a >= c, a, c) to max(a, c) by @copybara-service[bot] in #2285
- layout: handle non-rank reducing collapse_shape by @copybara-service[bot] in #2284
- Put convert-layout folder into layout-propagation as cleanup by @j2kun in #2305
- Add doctests to all passes in layout design doc (#2296) by @j2kun in #2306
- Fix random network comparison in shift network tests by @Time0o in #2315
- layout: relax layout conditions to lower halevi-shoup kernel by @copybara-service[bot] in #2313
- Fix #2047 by cleaning up last todos by @j2kun in #2322
- Add packing design doc to the HEIR website by @j2kun in #2296
- Disable mdformat for good by @j2kun in #2324
- fix frontmatter for real this time by @copybara-service[bot] in #2327
- fix formatting issues in layout design doc by @copybara-service[bot] in #2333
- Add a test for lower poly eval. Also add --lower-polynomial-eval pass to heir-polynomial-to-llvm pipeline. by @copybara-service[bot] in #2329
- BGV: NoiseAnalysis KPZ21: more conservative on ct-pt mul by @ZenithalHourlyRate in #2325
- Remove manual cyclic repetition in LattigoEmitter by @j2kun in #2319
- Add an OpenFHE dialect interpreter by @j2kun in #2314
- add canonicalizer pass before implement-rotate-and-reduce by @j2kun in #2303
- fix: tensor-linalg-to-affine-loops fix for 0-D tensors by @copybara-service[bot] in #2341
- [docs] update docs to match current pipelines by @copybara-service[bot] in #2340
- Add fold-plaintext-masks for simple cleanup after implement-shift-network by @j2kun in #2343
- Remove todo about emitting Yosys's internal representation by @copybara-service[bot] in #2346
- add support for tensor.insert_slice in layout optimization by @copybara-service[bot] in #2335
- Add orion entry dialect by @j2kun in #2330
- Separate TODO into isolated issue by @j2kun in #2321
- test: add e2e test for a 2-D convolution in isolation by @copybara-service[bot] in #2357
- Add DAG-based kernel cost model for layout optimization by @bon-cdp in #2347
- Add bicyclic layout and matmul kernel by @j2kun in #2359
New Contributors
Full Changelog: v2025.10.01...v2025.11.01
v2025.10.01
What's Changed
- migrate halevi-shoup matvec rewrite to kernel implementation using arithmetic DAG by @copybara-service[bot] in #2183
- add blog post for 2025-09-04 by @copybara-service[bot] in #2194
- Add a split-preprocessing pass by @copybara-service[bot] in #2185
- Automated Code Change by @copybara-service[bot] in #2197
- update lockfile from #2195 by @asraa in #2198
- workflows: install llvm tools from apt.llvm.org by @j2kun in #2179
- Add more doctests by @j2kun in #2186
- Add support for assigning new layouts for scalars by @copybara-service[bot] in #2200
- Add a tensor.insert kernel for new layouts by @j2kun in #2204
- fix mod_arith_to_arith runner tests by @j2kun in #2212
- diable allowPatternRollback in non-context-aware dialect conversion drivers by @j2kun in #2211
- Add layout propagation for vecmat and matmuls by @copybara-service[bot] in #2207
- tensor.extract kernel with new layout by @j2kun in #2205
- poly approximation: emit a chebyshev poly from the C-F approx to enable chebyshev basis lowerings by @copybara-service[bot] in #2191
- update lockfile by @j2kun in #2220
- add insert to new-layout-propagation by @j2kun in #2219
- Fix one missed API update by @copybara-service[bot] in #2221
- split out utils for making constants out of values by @copybara-service[bot] in #2222
- remove old TODOs we won't do by @j2kun in #2230
- Partition RNS limbs (not poly coefficients) in key_switch_inner lowering by @j2kun in #2208
- fix ubsan error: use OpConversionPattern with conversion driver by @copybara-service[bot] in #2232
- Remove TOSA from HEIR by @j2kun in #2229
- Minor cleanup of emitters by @j2kun in #2228
- fix build by @j2kun in #2233
- Fix workflows by doing checkout first by @j2kun in #2224
- Fix issues with Docker setup by @mabhay3420 in #2235
- Layout folding analysis by @j2kun in #2141
- Add integer relations for a 2-D convolution by @copybara-service[bot] in #2218
- try experimenting with macos ci by @j2kun in #2225
- Initial Sbox by @WoutLegiest in #2012
- update lockfile by @j2kun in #2243
- frontend: update to numba 0.62, simplify dependencies by @AlexanderViand in #2244
- add 2d convolution support in new-layout-propagation by @copybara-service[bot] in #2242
- Refactor ISL codegen using visitor pattern. by @copybara-service[bot] in #2247
- frontend: Emit ordered comparison predicates for floats by @Time0o in #2246
- MNIST via py_test and python torch dep by @j2kun in #2226
- fix requirements.txt breakage by @j2kun in #2250
- Add utils for vos-vos-erkin generalization by @j2kun in #2252
- remove stale code parsing integerrelations from integersets by @copybara-service[bot] in #2261
- Lower linalg.conv2d to tensor_ext in convert-to-ciphertext-semantics by @copybara-service[bot] in #2260
- Generalize Vos-Vos-Erkin algorithm to support arbitrary mappings by @j2kun in #2240
- test: add kernel testing with layout assignment by @copybara-service[bot] in #2266
- remove remaining uses of mlir_runner by @j2kun in #2274
- bump rules_hdl version for fixing fetch failures by @j2kun in #2276
- GenerateParam: update doc by @ZenithalHourlyRate in #2272
New Contributors
- @mabhay3420 made their first contribution in #2235
- @Time0o made their first contribution in #2246
Full Changelog: v2025.09.05...v2025.10.01
v0.0.2
This is the first release of the HEIR compiler.
For now we have no special launch or feature set. We're just tying GitHub releases to the publishing of heir_py on PyPI. v0.0.1 was a manual push of the wheels to PyPI. This release is to test the automated GitHub release workflow.