Releases: taichi-dev/taichi
Releases · taichi-dev/taichi
v0.6.25
Highlights:
- Bug fixes
- Fix random side-effect causing SSA violation in ti.Vector (#1631) (by 彭于斌)
- Documentation
- Examples
- GUI
- Language and syntax
- Support float and int as aliases for default-precision data types (#1585) (by 彭于斌)
- Miscellaneous
- Catch RuntimeError when detecting backends for better compatibility (#1647) (by 彭于斌)
- IR optimization passes
- Refactor
- "x.snode()" is deprecated, use "x.snode" instead (#1654) (by 彭于斌)
Full changelog:
- [bug] [sparse] Fix struct-fors on pointer SNodes (#1662) (by Yuanming Hu)
- [misc] [linux] Further improve misc/linker.map to prevent Blender segementation fault (#1661) (by 彭于斌)
- [doc] Re-update documentation on autodiff (#1623) (by 彭于斌)
- [Opt] Improve aliasing analysis for SNodes with trailing bits (#1657) (by xumingkuan)
bgcolor
->background_color
in GUI docs (#1660) (by samuela)- [Misc] [bug] Catch RuntimeError when detecting backends for better compatibility (#1647) (by 彭于斌)
- [workflow] Add Mac OS X to Github CI (#1649) (by 彭于斌)
- [Example] Add cg_possion.py, a Poisson solver based on conjugate gradients (#1595) (by 彭于斌)
- [Refactor] "x.snode()" is deprecated, use "x.snode" instead (#1654) (by 彭于斌)
- [GUI] Support gui.fps_limit and reduce idle power consumption (#1611) (by 彭于斌)
- [GUI] Support images with 2 channels (RG) in GUI.set_image (#1624) (by 彭于斌)
- [Opt] Improve the binary ops simplify pass (#1646) (by xumingkuan)
- [benchmark] Fix test_test.py benchmark including '' in filename (#1650) (by 彭于斌)
- [cc] [workflow] Add C backend to Github CI (#1643) (by 彭于斌)
- [Doc] Replace fields of xxx by xxx field (#1599) (by Xudong Feng)
- [cc] Compose ActionRecorder outputs into a single C file for Emscripten (#1629) (by 彭于斌)
- [error] Better error messages when using wrong type annotations (#1612) (by 彭于斌)
- [doc] Update instructions for using Stop Motion OBJ with PLY sequences (#1638) (by Justin)
- [Doc] Replace "tensor" by "field" in documentation (#1633) (by Xudong Feng)
- [doc] Fix typo in faq.rst (#1636) (by Danni)
- Fix hyperlink in faq.rst (#1637) (by Danni)
- [Example] Enhance stable_fluid.py with BFECC, RK2, RK3 and Taichi's new syntax (#1617) (by 彭于斌)
- [GUI] Support gui.arrow() and gui.arrows() (#1625) (by 彭于斌)
- [Lang] Support float and int as aliases for default-precision data types (#1585) (by 彭于斌)
- [Bug] Fix random side-effect causing SSA violation in ti.Vector (#1631) (by 彭于斌)
- [infra] Support GCC as compiler for Taichi developers (experimental) (#1598) (by 彭于斌)
- [Doc] Improve type.rst readability (#1618) (by 彭于斌)
- [gui] [bug] Fix hex_to_rgb (#1630) (by Yuanming Hu)
- [async] Clone offloaded tasks lazily by maintaining a cached template task (#1619) (by Ye Kuang)
v0.6.24
Highlights:
- Bug fixes
- Fix compiler error when flattening if(0) and if(1) (#1613) (by xumingkuan)
- Documentation
- Update documentations on autodiff (#1550) (by 彭于斌)
- Error messages
- Improve error message when using non-global variables in global operations (#1606) (by 彭于斌)
- Examples
- Add comet.py and fix to_numpy() on sparse matrix fields (#1583) (by 彭于斌)
- GUI
- Support gui.lines for batched line drawing (#1603) (by 彭于斌)
- Infrastructure
- Add "ti.profiler" (PythonProfiler) for intuitive Python-scope profiling (#1493) (by 彭于斌)
- IPython and other shells
- 'ti.sync()' is no longer needed for 'print()' in OpenGL and Metal backend (#1546) (by 彭于斌)
Full changelog:
- [misc] Revert #1493 (#1622) (by Taichi Gardener)
- [misc] Revert #1550 (#1621) (by Taichi Gardener)
- [Doc] [autodiff] Update documentations on autodiff (#1550) (by 彭于斌)
- [Example] Add comet.py and fix to_numpy() on sparse matrix fields (#1583) (by 彭于斌)
- [misc] [refactor] 'ti.vec' and 'ti.veci' is deprecated, directly use a tuple in GUI system instead (#1605) (by 彭于斌)
- [doc] Workflow for writing a Python test for #1462 (#1475) (by 彭于斌)
- [Infra] Add "ti.profiler" (PythonProfiler) for intuitive Python-scope profiling (#1493) (by 彭于斌)
- [test] [refactor] Add @ti.test decorators to unify testing infrastructure (#1462) (by 彭于斌)
- [async] Compute offloaded IR hash once and cache it (#1608) (by Ye Kuang)
- [Bug] [opt] Fix compiler error when flattening if(0) and if(1) (#1613) (by xumingkuan)
- [IPython] 'ti.sync()' is no longer needed for 'print()' in OpenGL and Metal backend (#1546) (by 彭于斌)
- [Error] Improve error message when using non-global variables in global operations (#1606) (by 彭于斌)
- [GUI] Support gui.lines for batched line drawing (#1603) (by 彭于斌)
v0.6.23
Highlights:
- OpenGL backend
Full changelog:
- [OpenGL] [perf] Support ti.block_dim as block size hint (#1602) (by 彭于斌)
- [opengl] [refactor] Fix TLS not working and refactor ParallelSize for grid-stride-loop (#1600) (by 彭于斌)
- [async] Demote struct-fors in async compilation (#1593) (by Ye Kuang)
- [ir] Make sure "StmtFieldManager" to be correct if we modify some fields after the ctor (#1587) (by Xuanda Yang)
- [ipython] [refactor] Misc tweaks to make #1308 easier to review (#1584) (by 彭于斌)
- [OpenGL] [perf] Support TLS to improve reduction performance (#1574) (by 彭于斌)
v0.6.22
Highlights:
- Language and syntax
- Support SNode trailing bits (#1558) (by Yuanming Hu)
- OpenGL backend
- Support 'ti.asm' to insert embed GLSL codes (experimental) (#1573) (by 彭于斌)
- Performance improvements
- Improve CUDA runtime performance with warp-level primitives (#1571) (by Yuanming Hu)
Full changelog:
- [cuda] [bug] Fix a CUDA codegen bug (#1592) (by Yuanming Hu)
- [test] Fix issues in "bls_particle_grid" tests caused by float-point errors (#1590) (by Yuanming Hu)
- [llvm] Fix LLVM runtime sparse computation issues (#1582) (by Yuanming Hu)
- [OpenGL] Support 'ti.asm' to insert embed GLSL codes (experimental) (#1573) (by 彭于斌)
- [example] Upgrade mpm88 to new syntax (#1581) (by 彭于斌)
- [gui] [error] [linux] Better error message when X display not available (#1575) (by 彭于斌)
- [test] Skip mpm88 async on Appveyor (#1566) (by Ye Kuang)
- [Perf] Improve CUDA runtime performance with warp-level primitives (#1571) (by Yuanming Hu)
- [async] Fuse tasks only if they are either from the same kernel or arg-less (#1530) (by Ye Kuang)
- [cc] Support ActionRecorder in C backend (#1559) (by 彭于斌)
- [metal] Plug in the SNodeRep structs into codegen (#1480) (by Ye Kuang)
- [Lang] Support SNode trailing bits (#1558) (by Yuanming Hu)
v0.6.21
Highlights:
- CUDA backend
- Upgrade to PTX 6.3 and add a few CUDA intrinsics (#1548) (by Yuanming Hu)
- Performance improvements
- Improve dynamic listgen and access performance (#1547) (by Yuanming Hu)
- Refactor
- 'ti.Matrix(n, m, dt, shape)' is deprecated, use 'ti.Matrix.var(n, m, dt, shape)' instead (#1531) (by 彭于斌)
Full changelog:
- [cc] The C backend is now capable of running mpm128 (#1553) (by 彭于斌)
- [bug] Update mpm_lagrangian_force and fix Matrix constructor (#1545) (by Ye Kuang)
- [opengl] [refactor] KernelParallelAttribs -> ParallelSize + virtual methods to make a way for grid-stride-loop (#1540) (by 彭于斌)
- [opengl] Fix reversed nested for loops error on OpenGL (#1554) (by 彭于斌)
- [Perf] Improve dynamic listgen and access performance (#1547) (by Yuanming Hu)
- [cuda] [llvm] Module broken is TI_WARN instead of TI_ERROR (#1557) (by 彭于斌)
- [linux] Fix LLVM symbol leakage in release mode by using RTLD_GLOBAL (#1544) (by 彭于斌)
- [CUDA] Upgrade to PTX 6.3 and add a few CUDA intrinsics (#1548) (by Yuanming Hu)
- [ir] Move struct-for demotion pass after offload pass (#1541) (by Ye Kuang)
- [cc] Support "range for" and "while" statement on C backend (#1536) (by 彭于斌)
- [refactor] Better import order by using __all__ (#1510) (by 彭于斌)
- [misc] Add is_path_all_dense to SNode (#1538) (by Ye Kuang)
- [Refactor] 'ti.Matrix(n, m, dt, shape)' is deprecated, use 'ti.Matrix.var(n, m, dt, shape)' instead (#1531) (by 彭于斌)
- [lang] [refactor] Setup a multipass AST transformer (#1467) (by 彭于斌)
v0.6.20
Highlights:
- Bug fixes
- Fix environment variable TI_ARCH=xxx not work (#1528) (by 彭于斌)
- CUDA backend
- Examples
- GUI
- Support gui.triangles() for batched triangle painting (#1520) (by 彭于斌)
- Language and syntax
- Enhance warning system and support runtime assert message (#1492) (by 彭于斌)
- Support "break" and "continue" in static-fors (#1496) (by 彭于斌)
- Support (a if cond else b) syntax in Taichi-scope (#1468) (by 彭于斌)
- Make block local storage support coordinate offsets and improve its performance (#1497) (by Yuanming Hu)
- Linux
- Fix LLVM symbol leakage to prevent conflict with libGLX_mesa.so by LD version script (#1508) (by 彭于斌)
- Performance improvements
- Make BLS work for MPM (#1518) (by Yuanming Hu)
- Refactor
- Add "ti.field" and "ti.Matrix.field" for future deprecation of "ti.var" (#1502) (by 彭于斌)
Full changelog:
- [Example] [autodiff] Add FEM elastic simulator: fem99 and fem128 (#1521) (by 彭于斌)
- [cuda] Another mutex fix (#1534) (by Yuanming Hu)
- [opengl] [test] Fix failed OpenGL tests these days (#1533) (by 彭于斌)
- [misc] Prettify KernelProfiler outputs (#1525) (by Yuanming Hu)
- [Example] [autodiff] Add ad_gravity.py (compute gradient from potential energy) (#1522) (by 彭于斌)
- [cuda] Fix mutex on Turing GPUs (#1532) (by Yuanming Hu)
- [Bug] [cli] Fix environment variable TI_ARCH=xxx not work (#1528) (by 彭于斌)
- [Example] Enhance nbody_oscillator.py with molecular force (#1529) (by 彭于斌)
- [metal] Introduce SNodeRep_* to be used in the generated SNode structs (#1527) (by Ye Kuang)
- [test] Fix a typo in test_field.py that caused the failure of CI (#1523) (by Xudong Feng)
- [bug] Fix dynamic SNode activation (#1526) (by Yuanming Hu)
- [GUI] Support gui.triangles() for batched triangle painting (#1520) (by 彭于斌)
- [Perf] Make BLS work for MPM (#1518) (by Yuanming Hu)
- [test] Add test_fuse_dynamic.py to unit test (#1513) (by Ye Kuang)
- [doc] Update documentaion on meta programming for #1374 (#1389) (by 彭于斌)
- [CUDA] Use CUDA launch bound to limit register usage (#1516) (by Yuanming Hu)
- [misc] Fix ti.init argument parsing when corresponding environment variable presents (#1517) (by Yuanming Hu)
- [metal] Fix listgen when iterating over children of bitmasked (#1511) (by Ye Kuang)
- [test] Fix test_field.py (#1514) (by Yuanming Hu)
- [Refactor] [lang] Add "ti.field" and "ti.Matrix.field" for future deprecation of "ti.var" (#1502) (by 彭于斌)
- [misc] Update README.md (#1512) (by Yuanming Hu)
- [Lang] Enhance warning system and support runtime assert message (#1492) (by 彭于斌)
- [CUDA] [llvm] Format CUDA assertions and access out-of-bound errors on the host (#1509) (by Yuanming Hu)
- [opt] Enable dead instruction elimination for RangeAssumptionStmt (#1507) (by xumingkuan)
- [Linux] Fix LLVM symbol leakage to prevent conflict with libGLX_mesa.so by LD version script (#1508) (by 彭于斌)
- [cli] Fix "AttributeError" of pytest arguments (#1505) (by xumingkuan)
- [cli] Remove the never used 'tid' command (#1494) (by 彭于斌)
- [Lang] Support "break" and "continue" in static-fors (#1496) (by 彭于斌)
- [doc] Fix code-block render issue in debugging.rst (#1484) (by 彭于斌)
- [Lang] Support (a if cond else b) syntax in Taichi-scope (#1468) (by 彭于斌)
- [async] Add test_fuse_dense.py to unit tests (#1504) (by Ye Kuang)
- [Lang] [perf] Make block local storage support coordinate offsets and improve its performance (#1497) (by Yuanming Hu)
- [metal] Misc tweaks to make #1480 easier to review (#1481) (by Ye Kuang)
v0.6.18
Highlights:
- Docker
- Some minor doc fixes and add a docker build badge (#1442) (by Chengchen(Rex) Wang)
- Examples
- Add mass_spring_3d.py (an extension library usage demo) (#1386) (by 彭于斌)
- Language and syntax
- Miscellaneous
- Standardize ti.init(), now support log_level, gdb_trigger, advanced_optimization as kwargs (#1396) (by 彭于斌)
Full changelog:
- [metal] Refactor runtime ListManager utils (#1444) (by Ye Kuang)
- [Lang] Experimental external function call support (#1456) (by xumingkuan)
- [misc] 'ti.init()' now supports all exported configurations in ti.cfg (#1449) (by 彭于斌)
- [doc] Improve the developer installation documentation (#1388) (by 彭于斌)
- [Example] Add mass_spring_3d.py (an extension library usage demo) (#1386) (by 彭于斌)
- [ir] [refactor] Move alias analysis to a separate file (#1446) (by xumingkuan)
- [Misc] [cli] Standardize ti.init(), now support log_level, gdb_trigger, advanced_optimization as kwargs (#1396) (by 彭于斌)
- [doc] [Docker] Some minor doc fixes and add a docker build badge (#1442) (by Chengchen(Rex) Wang)
- [Lang] [ir] Support ti.assume_in_range (#1441) (by Yuanming Hu)
- [llvm] [mac] Update OS X build bots with prebuilt LLVM 10 (#1429) (by Xuanda Yang)
- [llvm] Support BLS epilogues (#1433) (by Yuanming Hu)
- [cc] Setup basic statements & runtime for C backend (#1400) (by 彭于斌)
v0.6.17
Highlights:
- Bug fixes
- Fix all potential matrix SSA violation by using element_wise_write_binary (#1424) (by 彭于斌)
- CUDA backend
- Improve random number generator performance (#1419) (by Yuanming Hu)
- Docker
- Update the Dockerfile to use up-to-date instructions for Ubuntu (#1385) (by Chengchen(Rex) Wang)
- Error messages
- GUI
- Intermediate representation
- Block local storage for struct-for's on CUDA (#1394) (by Yuanming Hu)
- Language and syntax
- Add ti.static_assert for compile-time assertations (#1344) (by 彭于斌)
- Metal backend
- Use managed storage mode to improve performance (#1415) (by Ye Kuang)
- IR optimization passes
- Better aliasing analysis for dead store elimination (#1432) (by xumingkuan)
- Performance improvements
- Support TLS for GlobalTemporaryStmt (#1423) (by Ye Kuang)
Full changelog:
- [GUI] Get images from the current GUI using gui.get_image() (#1422) (by Xudong Feng)
- [cuda] [bug] Fix CUDA garbage collection grid dim (#1438) (by Yuanming Hu)
- [misc] ActionRecorder (Stage I) (#1428) (by Yuanming Hu)
- [Bug] [lang] [std] Fix all potential matrix SSA violation by using element_wise_write_binary (#1424) (by 彭于斌)
- [Opt] [bug] Better aliasing analysis for dead store elimination (#1432) (by xumingkuan)
- [metal] Pass kernel name and is_evalutator to the runtime (#1430) (by Ye Kuang)
- [Error] Raise an warning when a Taichi matrix have > 32 entries (#1401) (by 彭于斌)
- [llvm] Separate BLS/TLS and refactor loop code generation (#1425) (by Yuanming Hu)
- [Metal] Use managed storage mode to improve performance (#1415) (by Ye Kuang)
- [Perf] Support TLS for GlobalTemporaryStmt (#1423) (by Ye Kuang)
- [Error] Show pretty & intuitive stack traceback when ti.enable_excepthook() used (#1405) (by 彭于斌)
- [error] Instruct user to use static range when matrix accessed with non constant index (#1420) (by 彭于斌)
- [CUDA] Improve random number generator performance (#1419) (by Yuanming Hu)
- [GUI] [linux] Support mouse wheel event on Linux/X11 (#1411) (by 彭于斌)
- [GUI] Support mouse wheel event on Mac Cocoa (#1418) (by Ye Kuang)
- [error] Fix wrong error message when using vector as if condition (#1417) (by 彭于斌)
- [bug] Fix test_fibonacci (#1414) (by Ye Kuang)
- [test] [std] Add matrix SSA violation regression test (#1412) (by 彭于斌)
- [GUI] Support mouse wheel event on Win32 (#1382) (by JYLeeLYJ)
- [opt] [refactor] Move advanced optimization toggle to "ti.cfg.advanced_optimization" (#1403) (by 彭于斌)
- [Lang] Add ti.static_assert for compile-time assertations (#1344) (by 彭于斌)
- [IR] Block local storage for struct-for's on CUDA (#1394) (by Yuanming Hu)
- [Docker] Update the Dockerfile to use up-to-date instructions for Ubuntu (#1385) (by Chengchen(Rex) Wang)
- [llvm] Use LLVM 10 for AppVeyor and GitHub actions (#1402) (by Yuanming Hu)
- [opt] Flatten if(0) and if(1) (#1393) (by xumingkuan)
- [cc] Add struct compiler to the experimental C backend (#1354) (by 彭于斌)
- [workflow] Fix PR title checker "fix fatal: bad revision 'master'" in release PR (#1399) (by 彭于斌)
v0.6.16
Highlights:
- Bug fixes
- CUDA backend
- Taichi now supports CUDA 11 (#1395) (by Yuanming Hu)
- Language and syntax
- Deprecate x.data_type() and use x.dtype instead (#1374) (by 彭于斌)
- IR optimization passes
- Do not flatten if's by default (#1372) (by xumingkuan)
- Performance improvements
- Support TLS and SIMD group reduction for range-for kernels (#1358) (by Ye Kuang)
Full changelog:
- [Bug] [ir] Fix compilation crash when there's a cross-offload global atomic operation (#1392) (by xumingkuan)
- [lang] [bug] Fix Matrix.diag (remove unwanted truncation to int) (#1397) (by Yuanming Hu)
- [ir] Fix ir_printer now that print() supports end (#1350) (by Ye Kuang)
- [Bug] [lang] Fix @ti.func not capturing closure variables (#1380) (by 彭于斌)
- [cli] Use "ti task" for run task (legacy), and "ti run" to run script (#1391) (by 彭于斌)
- [ir] Remove a temporary "fix_block_parents" (#1352) (by xumingkuan)
- [CUDA] Taichi now supports CUDA 11 (#1395) (by Yuanming Hu)
- [bug] [refactor] Fix error when ti.init() not called by deprecating Expr.layout_materialized (#1347) (by 彭于斌)
- [refactor] [Lang] Deprecate x.data_type() and use x.dtype instead (#1374) (by 彭于斌)
- [lang] "ti.chain_compare" now can return python-scope constants (#1356) (by 彭于斌)
- [refactor] Move c_quoted into taichi/utils/ (#1376) (by Ye Kuang)
- [lang] [bug] Add @ti.pyfunc for functions that work in both Taichi and Python-scope, fix matrix methods (#1338) (by 彭于斌)
- [bug] Fix master due to compilation error (#1375) (by Ye Kuang)
- [llvm] Further improve LLVM 10 compatibility by using RTLD_DEEPBIND (#1355) (by 彭于斌)
- [workflow] Fix GitHub workflows (#1370) (by Yuanming Hu)
- [Opt] Do not flatten if's by default (#1372) (by xumingkuan)
- [bug] [opt] Fix CFG ignoring local atomics after lower_access (#1371) (by xumingkuan)
- [misc] [gui] Resolve deprecation warning (img.shape) (#1369) (by Hojun Yoon)
- [lang] Raise an error when struct-for indices number mismatch (#1357) (by 彭于斌)
- [Perf] [metal] Support TLS and SIMD group reduction for range-for kernels (#1358) (by Ye Kuang)
v0.6.15
Highlights:
- IPython and other shells
- Support inline output display in Jupyter GUI (#1331) (by 彭于斌)
- IR optimization passes
- Replace "simplify" with "full_simplify" in "Simplified I" (#1353) (by xumingkuan)
Full changelog:
- [misc] Format the C backend (#1364) (by Taichi Gardener)
- [misc] Exclude C backend by default to fix Linux builds (#1362) (by Yuanming Hu)
- [cc] Set up the experimental C language backend (#1348) (by 彭于斌)
- [Opt] Replace "simplify" with "full_simplify" in "Simplified I" (#1353) (by xumingkuan)
- [doc] Update compilation.rst (#1351) (by Yuanming Hu)
- [IPython] [gui] Support inline output display in Jupyter GUI (#1331) (by 彭于斌)
- [refactor] [metal] Add a TaichiKernelAttribs struct (#1341) (by Ye Kuang)