Releases: taichi-dev/taichi
v0.9.1
Highlights:
- CI/CD workflow
- Cleanup workspace before window test (#4405) (by Jian Zeng)
- Documentation
- Update docstrings for functions in ops (#4465) (by Zhao Liang)
- Update docstring for functions in misc (#4474) (by Zhao Liang)
- Update docstrings in misc (#4446) (by Zhao Liang)
- Update docstring for functions in operations (#4427) (by Zhao Liang)
- Update PyTorch interface documentation (#4311) (by Andrew Sun)
- Update docstring for functions in operations (#4413) (by Zhao Liang)
- Update docstring for functions in operations (#4392) (by Zhao Liang)
- Fix broken links (#4368) (by Ye Kuang)
- Re-structure the articles: getting-started, gui (#4360) (by Ye Kuang)
- Error messages
- Add error message when the number of elements in kernel arguments exceed (#4444) (by Xiangyun Yang)
- Add error for invalid snode size (#4460) (by Lin Jiang)
- Add error messages for wrong type annotations of literals (#4462) (by Yi Xu)
- Remove the mentioning of ti.pyfunc in the error message (#4429) (by Lin Jiang)
- Language and syntax
- Vulkan backend
- Enable Vulkan device selection when using cuda (#4330) (by Bo Qiao)
Full changelog:
- [bug] [llvm] Initialize the field to 0 when finalizing a field (#4463) (by Lin Jiang)
- [Doc] Update docstrings for functions in ops (#4465) (by Zhao Liang)
- [Error] Add error message when the number of elements in kernel arguments exceed (#4444) (by Xiangyun Yang)
- [Doc] Update docstring for functions in misc (#4474) (by Zhao Liang)
- [metal] Support device memory allocation/deallocation (#4439) (by Ye Kuang)
- update docstring for exceptions (#4475) (by Zhao Liang)
- [llvm] Support real function with single scalar return value (#4452) (by Lin Jiang)
- [refactor] Remove LLVM logic from the generic Device interface (#4470) (by PGZXB)
- [lang] Add decorator ti.experimental.real_func (#4458) (by Lin Jiang)
- [ci] Add python 3.10 into nightly test and release (#4467) (by Bo Qiao)
- [bug] Fix metal linker error when TI_WITH_METAL=OFF (#4469) (by Bo Qiao)
- [Lang] Support sparse matrix builder datatype configuration (#4411) (by Peng Yu)
- [Error] Add error for invalid snode size (#4460) (by Lin Jiang)
- [aot] [refactor] Refactor AOT runtime API to use module (#4437) (by Bo Qiao)
- [misc] Optimize verison check (#4461) (by Jiasheng Zhang)
- [Error] Add error messages for wrong type annotations of literals (#4462) (by Yi Xu)
- [misc] Remove some warnings (#4453) (by PGZXB)
- [refactor] Move literal construction to expr module (#4448) (by Yi Xu)
- [bug] [lang] Enable break in the outermost for not in the outermost scope (#4447) (by Lin Jiang)
- [Doc] Update docstrings in misc (#4446) (by Zhao Liang)
- [llvm] Support real function which has scalar arguments (#4422) (by Lin Jiang)
- [Lang] Support type annotations for literals (#4440) (by Yi Xu)
- [misc] Remove a unnecessary function (#4443) (by PGZXB)
- [metal] Expose BufferMemoryView (#4432) (by Ye Kuang)
- [Lang] Support simple matrix slicing (#4420) (by Xiangyun Yang)
- [Doc] Update docstring for functions in operations (#4427) (by Zhao Liang)
- [metal] Add Unified Device API skeleton code (#4431) (by Ye Kuang)
- [refactor] Refactor llvm-offloaded-task-name mangling (#4418) (by PGZXB)
- [Doc] Update PyTorch interface documentation (#4311) (by Andrew Sun)
- [misc] Add deserialization tool for benchmarks (#4278) (by rocket)
- [misc] Add matrix operations to micro-benchmarks (#4190) (by rocket)
- [Error] Remove the mentioning of ti.pyfunc in the error message (#4429) (by Lin Jiang)
- [metal] Add AotModuleLoader (#4423) (by Ye Kuang)
- [Doc] Update docstring for functions in operations (#4413) (by Zhao Liang)
- [vulkan] Support templated kernel in aot module (#4417) (by Ailing)
- [vulkan] [aot] Add aot namespace Vulkan (#4419) (by Bo Qiao)
- [Lang] Support kernel to return a matrix type value (#4062) (by Xiangyun Yang)
- [test] Add a test for the ad_gravity example (#4404) (by FZC)
- [Doc] Update docstring for functions in operations (#4392) (by Zhao Liang)
- [CI] Cleanup workspace before window test (#4405) (by Jian Zeng)
- [build] Enforce compatibility with manylinux2014 when TI_WITH_VULKAN=OFF (#4406) (by Yi Xu)
- [ci] Update tag to projects (#4400) (by Bo Qiao)
- [ci] Reduce test parallelism for m1 (#4394) (by Bo Qiao)
- [aot] [vulkan] Add AotKernel and its Vulkan impl (#4387) (by Ye Kuang)
- [vulkan] [aot] Move add_root_buffer to public members (#4396) (by Gabriel H)
- [llvm] Remove LLVM functions related to a SNode tree from the module when the SNode tree is destroyed (#4356) (by Lin Jiang)
- [test] disable serveral workflows on forks (#4393) (by Jian Zeng)
- [ci] Windows build exits on the first error (#4391) (by Bo Qiao)
- [misc] Upgrade test and docker image to support python 3.10 (#3986) (by Bo Qiao)
- [aot] [vulkan] Output shapes/dims to AOT exported module (#4382) (by Gabriel H)
- [test] Merge the py38 only cases into the main test suite (#4378) (by Frost Ming)
- [vulkan] Refactor Runtime to decouple the SNodeTree part (#4380) (by Ye Kuang)
- [lang] External Ptr alias analysis & demote atomics (#4273) (by Bob Cao)
- [example] Fix implicit_fem example command line arguments (#4372) (by bx2k)
- [mesh] Constructing mesh from data in memory (#4375) (by bx2k)
- [refactor] Move aot_module files (#4374) (by Ye Kuang)
- [test] Add test for exposed top-level APIs (#4361) (by Yi Xu)
- [refactor] Move arch files (#4373) (by Ye Kuang)
- [build] Build with Apple clang-13 (#4370) (by Ailing)
- [test] [example] Add a test for print_offset example (#4355) (by Zhi Qi)
- [test] Add a test for the game_of_life example (#4365) (by 0xzhang)
- [test] Add a test for the nbody example (#4366) (by 0xzhang)
- [Doc] Fix broken links (#4368) (by Ye Kuang)
- [ci] Run vulkan and metal separately on M1 (#4367) (by Ailing)
- [Doc] Re-structure the articles: getting-started, gui (#4360) (by Ye Kuang)
- [Vulkan] Enable Vulkan device selection when using cuda (#4330) (by Bo Qiao)
- [misc] Version bump: v0.9.0->v0.9.1 (#4363) (by Ailing)
- [dx11] Materialize runtime, map and unmap (#4339) (by quadpixels)
v0.9.0
Highlights
New features
1. Dynamic indexing of matrices (experimental)
In previous versions of Taichi, a matrix can be accessed only with a constant index. As a result, you cannot perform operations such as clamp the minimum element in a vector to 0:
@ti.kernel
def clamp():
... # assume we have a n-d vector A
min_index = 0
for i in range(n):
if A[i] < A[min_index]:
min_index = i
A[min_index] = 0
Of course, you may use the following workaround leveraging loop unrolling. It is, however, neither intuitive nor efficient:
@ti.kernel
def clamp():
... # assume we have a n-d vector A
min_index = 0
for i in ti.static(range(n)):
if A[i] < A[min_index]:
min_index = i
for i in ti.static(range(n)):
if i == min_index:
A[i] = 0
With this new experimental feature of dynamic indexing of matrices, you can now run the former code snippet smoothly. The feature can be enabled by setting ti.init(dynamic_index=True)
.
In v0.9.0, a new implicit FEM (Finite Element Method) example (https://github.com/taichi-dev/taichi/blob/master/python/taichi/examples/simulation/implicit_fem.py) is added, which also illustrates the benefit of having this feature. In this example, a huge (12 × 12) Hessian matrix is constructed for implicit time integration. Without dynamic indexing, the whole matrix construction loop needs to be unrolled, which takes 70 seconds to compile; with dynamic indexing, a traditional loop version can be applied, and the compilation time is shortened to 2.5 seconds.
2. Vulkan backend on macOS
Adds support for the ti.vulkan
backend on macOS 10.15+ and now you can run GGUI on your macBook. Run the following GGUI examples to try for yourself.
# prerequisites: taichi >= v0.9.0 and macOS >= 10.15
# run GGUI examples
ti example fractal3d_ggui
ti example fem128_ggui
3. Compatibility with Google Colab
The system would crash if you run Taichi of an earlier version in the Google Colab notebook environment (see #235 for more information). In this release, we refactored our compiler implementation so that Taichi is compatible with Google Colab.
Feel free to run !pip install taichi
to install Taichi and start your Colab journey with it.
Improvements
1. More stabilized, better-organized APIs
Ensuring the developers use the right set of APIs is critical to the long-term stability of Taichi's APIs. In this release, we started to reorganize its package structure and deprecate some obsolete or internal APIs. The following table lists some critical APIs that may concern you.
Category | Deprecated API | Replaced with |
---|---|---|
Builtin | max() |
ti.max() |
Builtin | min() |
ti.min() |
Atomic operation | obj.atomic_add() |
ti.atomic_add() |
Image-specific | ti.imread() |
ti.tools.imread() |
Image-specific | ti.imwrite() |
ti.tools.imwrite() |
Image-specific | ti.imshow() |
ti.tools.imshow() |
Profiler-specific | ti.print_profile_info() |
ti.profiler.print_scoped_profiler_info() |
Profiler-specific | ti.print_kernel_profile_info() |
ti.profiler.print_kernel_profiler_info() |
For a representative list of APIs deprecated in this release, see this Google doc.
2. Better error reporting
Lengthy traceback in an error report, for most of the time, can be distracting, making it hard to locate the code causing the error. In this release, we've removed the trivial traceback that does not concern developers in our error reporting to improve the debugging experience.
Taking the following code snippet as an example:
import taichi as ti
ti.init()
@ti.func
def bar(a):
a = a + 2j
@ti.kernel
def foo():
bar(1)
foo()
Before v0.9.0, the error message looks like this:
[Taichi] Starting on arch=x64
Traceback (most recent call last):
File "error.py", line 13, in <module>
foo()
File "/path_to_taichi/lang/kernel_impl.py", line 709, in wrapped
return primal(*args, **kwargs)
File "/path_to_taichi/lang/kernel_impl.py", line 636, in __call__
key = self.ensure_compiled(*args)
File "/path_to_taichi/lang/kernel_impl.py", line 627, in ensure_compiled
self.materialize(key=key, args=args, arg_features=arg_features)
File "/path_to_taichi/lang/kernel_impl.py", line 493, in materialize
taichi_kernel = _ti_core.create_kernel(taichi_ast_generator,
File "/path_to_taichi/lang/kernel_impl.py", line 488, in taichi_ast_generator
compiled()
File "error.py", line 11, in foo
bar(1)
File "/path_to_taichi/lang/kernel_impl.py", line 76, in decorated
return fun.__call__(*args)
File "/path_to_taichi/lang/kernel_impl.py", line 156, in __call__
ret = self.compiled(*args)
File "error.py", line 7, in bar
a = a + 2j
File "/path_to_taichi/lang/common_ops.py", line 16, in __add__
return ti.add(self, other)
File "/path_to_taichi/lang/ops.py", line 78, in wrapped
return imp_foo(a, b)
File "/path_to_taichi/lang/ops.py", line 63, in imp_foo
return foo(x, y)
File "/path_to_taichi/lang/ops.py", line 427, in add
return _binary_operation(_ti_core.expr_add, _bt_ops_mod.add, a, b)
File "/path_to_taichi/lang/ops.py", line 173, in _binary_operation
a, b = wrap_if_not_expr(a), wrap_if_not_expr(b)
File "/path_to_taichi/lang/ops.py", line 36, in wrap_if_not_expr
return Expr(a) if not is_taichi_expr(a) else a
File "/path_to_taichi/lang/expr.py", line 33, in __init__
self.ptr = impl.make_constant_expr(arg).ptr
File "/path_to_taichi/lang/util.py", line 196, in wrapped
return func(*args, **kwargs)
File "/path_to_taichi/lang/impl.py", line 414, in make_constant_expr
raise ValueError(f'Invalid constant scalar expression: {type(val)}')
ValueError: Invalid constant scalar expression: <class 'complex'>
In v0.9.0, the error message looks like this:
Traceback (most recent call last):
File "/path_to_test/error.py", line 13, in <module>
foo()
File "/path_to_taichi/lang/kernel_impl.py", line 732, in wrapped
raise type(e)('\n' + str(e)) from None
taichi.lang.exception.TaichiTypeError:
On line 11 of file "/path_to_test/error.py", in foo:
bar(1)
^^^^^^
On line 7 of file "/path_to_test/error.py", in bar:
a = a + 2j
^^^^^^
Invalid constant scalar data type: <class 'complex'>
3. Revamped Taichi's documentation site
To improve the readability and user-friendliness of our documentation, we restructured Taichi's documentation site and incorporated API reference into it.
Join our discussions to build the next Taichi release for you!
We believe that our community plays a pivotal role in the development of the Taichi programming language. In that spirit, we encourage you to take an active part in our GitHub Discussions, propose potential changes, and contribute your ideas. Together, we improve the Taichi language release by release, for you and for every developer.
The following is a selected list of hot topics for you to start with:
Specifically, because beginners to Taichi sometimes get lost in different APIs such as ti.Vector
, ti.types.vector
, ti.Vector.field
, we plan to make them clearer and would like to have your opinions on these proposed practices:
- Always keep type identifiers in lowercase.
- Always use
ti.types.vector
to define a vector type. - After having type definitions like
my_vec2i = ti.types.vector(2, ti.i32)
, usemy_vec2i([5, 10])
for a vector object. - For simplicity, we preserve
ti.vector([1, 2])
as a shortcut forti.types.vector()([1, 2])
, which automatically infers missing type information of the object. - Use
ti.field(dtype=my_vec2i, shape=100)
for a field object.
API changes
See this Google doc for a representative list of APIs deprecated in this release.
Deprecation notice
Python 3.6 has reached EOL as of December 2021. The next major Taichi release (e.g. v1.0) will be the last official release for Python3.6 and we're actively working on adding support for Python3.10.
Full changelog:
- [test] Add a test for simple_derivative example (#4323) (by TinyBox)
- [example] Add implicit fem example (#4352) (by bx2k)
- [opengl] Use element shape as compile information for OpenGL backend (#4284) (by Haidong Lan)
- [ci] Exit on error windows test script (#4354) (by Bo Qiao)
- [bug] Update children_offsets & stride info to align as elem_stride (#4345) (by Ailing)
- [gui] Update GGUI examples to use vulkan backend if available (#4353) (by Ailing)
- [ci] Use conda python for m1 jobs (#4351) (by Ailing)
- [lang] Add support for operators "is" and "is not" in static scope and deprecate them (#4349) (by Lin Jiang)
- [ci] Increase ci test parallelism (#4348) (by Bo Qiao)
- [opengl] R...
v0.8.11
This is a bug fix release for v0.8.10.
If you have seen excessive warnings like below on windows, please upgrade to this release.
- Bug fixes
- [bug] Fix warnings on external functions on windows (#4079) (by Lin Jiang)
a.py:11: UserWarning: Calling non-taichi function "ti.random". Scope inside the function is not processed by the Taichi AST transformer. The function may not work as expected. Proceed with caution! Maybe you can consider turning it into a @ti.func?
a[i] = ti.pow(ti.random(), 2)
a.py:11: UserWarning: Calling non-taichi function "ti.pow". Scope inside the function is not processed by the Taichi AST transformer. The function may not work as expected. Proceed with caution! Maybe you can consider turning it into a @ti.func?
a[i] = ti.pow(ti.random(), 2)
Full changelog:
v0.8.10
Highlights:
- AOT
- Language and syntax
- Performance
- Accelerate whole_kernel_cse pass (#3957) (by Xiangyun Yang)
- Get rid of some no-ops in linear seek (by Ailing Zhang)
- Reduce kernel launch context construction overhead (#3947) (by Haidong Lan)
- Refactor func body to reduce python overhead and improve readability (#3984) (by Haidong Lan)
- Get store_to_load_forwarding work with local tensors across basic blocks (#3942) (by Yi Xu)
- Documentations
- Error messages
- Bug fixes
Full changelog:
- [bug] Fix bug that building with TI_WITH_LLVM=OFF will fail (#4043) (by PGZXB)
- [doc] Improve type system documentation (#4002) (by Bo Qiao)
- [Error] Add error message when non-0d numpy ndarray is given to initialize expression (#4030) (by Lin Jiang)
- [Error] Produce a warning when users call external functions (#4007) (by Lin Jiang)
- [aot] Use element_shape instead of row_num & column_num for CompiledFieldData. (by Ailing Zhang)
- [vulkan] [aot] Switch vulkan aot to use taichi::aot::ModuleData. (by Ailing Zhang)
- [vulkan] Fix gtmp type (#4042) (by Bob Cao)
- [doc] Add an operation page (#4004) (by Bo Qiao)
- [ir] [refactor] Split stmt typechecking to the frontend (#3875) (by daylily)
- [build] Disable LTO for mac. (#4027) (by Ailing)
- [autodiff] Restrict Independent Block scope for cases with atomic operations on global variables (#3897) (by Mingrui Zhang)
- [gui] GGUI imwrite BGRA to RGBA conversion (#4018) (by Bob Cao)
- [test] [example] Add a test and a video generator for mpm99 (#3995) (by Yi Xu)
- [doc] [ci] Update Docs preview settings. (#4021) (by Chengchen(Rex) Wang)
- [vulkan] [aot] Throw error for templated kernels in vulkan aot. (by Ailing Zhang)
- [bug] [opt] Treat PtrOffsetStmt as random-initialized (#3998) (by Yi Xu)
- [ci] Keep macOS actions run on macOS-10.15 (#4014) (by rocket)
- [vulkan] [aot] Enable aot tests for vulkan backend. (#4000) (by Ailing)
- [mesh] [opt] Experimental automatic mesh_local (#3989) (by Chang Yu)
- [doc] Add doc for compile-time recursion (#3994) (by Lin Jiang)
- [refactor] [opengl] Get rid of some no-ops in linear seek (by Ailing Zhang)
- [opengl] Do not promote simple ExternalTensorShapeAlongAxisStmt into globals. (by Ailing Zhang)
- [build] Upgrade SPIRV-Headers and SPIRV-Tools to their latest commits (#3967) (by PGZXB)
- [opengl] [aot] Convert opengl aot to dump ModuleData. (#3991) (by Ailing)
- [mesh] Support multiple major relations in one mesh-for loop (#3987) (by Chang Yu)
- [refactor] Refactor func body to reduce python overhead and improve readability (#3984) (by Haidong Lan)
- [opt] Add more strict alias analysis for ExternalPtrStmt (#3992) (by Ailing)
- [opt] Accelerate whole_kernel_cse pass (#3957) (by Xiangyun Yang)
- [mesh] [opt] Support nested mesh-for (#3990) (by Chang Yu)
- [Lang] Provide sparse matrix shape (#3959) (by Peng Yu)
- [refactor] Remove dependency on get_current_program() in backends/cpu and backends/cuda (#3956) (by PGZXB)
- [mesh] Demote from-end element attribute atomic op (#3923) (by Chang Yu)
- [ci] Support rebase and rerun command in comment for CI bot (#3952) (by Frost Ming)
- [refactor] [ci] Enable identifier naming in clang-tidy (#3960) (by Bo Qiao)
- [refactor] [ir] Use FrontendExprStmt in place of FrontendEvalStmt (#3978) (by daylily)
- [example] [test] Fix misuse of logical operators in examples and tests (#3976) (by Yi Xu)
- [Error] Shorten the length of traceback of TaichiCompilationError (#3965) (by Lin Jiang)
- [aot] Add a generic set of AOT structs (#3973) (by Ye Kuang)
- [Error] Add TaichiTypeError (#3964) (by Lin Jiang)
- [aot] Add task_type for OpenGL (#3962) (by Ye Kuang)
- [Error] Raise exception when encountering undefined name (#3951) (by Lin Jiang)
- [misc] [cuda] Set the toolkit used by KernelProfiler at runtime (#3945) (by rocket)
- [refactor] Get global vars by using globals (#3949) (by Lin Jiang)
- [refactor] Support static short circuit bool operations (#3958) (by Lin Jiang)
- [perf] [refactor] Reduce kernel launch context construction overhead (#3947) (by Haidong Lan)
- [refactor] Move python/taichi/lang/meta.py to python/taichi/_kernels.py (by Ailing Zhang)
- [refactor] Remove import taichi in taichi/lang/impl.py (by Ailing Zhang)
- [refactor] Remove ndarray_use_torch from pybind (#3946) (by Bo Qiao)
- [ci] Test opengl backend on windows (#3924) (by Frost Ming)
- [Error] Do not show body in exceptions in nodes with body (#3940) (by Lin Jiang)
- [opt] Get store_to_load_forwarding work with local tensors across basic blocks (#3942) (by Yi Xu)
- [refactor] [ir] Remove legacy stmts from CHI IR (#3943) (by Yi Xu)
- [Error] Shorten the length of traceback of exceptions thrown by ASTTransformer (#3873) (by lin-hitonami)
- [misc] Version bump: v0.8.9 -> v0.8.10 (#3935) (by Bo Qiao)
v0.8.9
Highlights:
- Android
- Add initial support of Android in GGUI (#3845) (by Gabriel H)
- Bug fixes
- Language and syntax
- Miscellaneous
- Support logging on Android platforms (#3849) (by Gabriel H)
- Refactor
- Tests
Full changelog:
- [ci] Install torch for windows release (#3932) (by Bo Qiao)
- [Bug] fix the ttf path (#3931) (by Xiangyun Yang)
- [Bug] [cuda] Query device attribute when using cuda 11 and above (#3930) (by Bo Qiao)
- [refactor] Optimize vector and matrix ndarray fill (#3921) (by Bo Qiao)
- [opt] [ir] [refactor] Remove exceptions from offload pass (#3925) (by Xiangyun Yang)
- [opt] [refactor] Remove the variable_optimization pass (#3927) (by Mingkuan Xu)
- [doc] Add a tutorial: Run Ndarray Taichi program (#3908) (by Vissidarte-Herman)
- [opt] [ir] [refactor] Remove exceptions from lower_ast pass (#3916) (by Xiangyun Yang)
- [cuda] Use cuMemsetD32 to fill scalar ndarray (#3907) (by Bo Qiao)
- [ci] Add self-hosted Windows buildbot for GPU testing (#3852) (by Frost Ming)
- [Lang] Initial matrix argument support for ti.kernel (#3905) (by Xiangyun Yang)
- [doc] Add example of color_edit_3 (#3919) (by Vineyo)
- [perf] Clear global_vars/matrix_fields after materialize() (#3914) (by Yi Xu)
- [gui] Update camera.py (#3898) (by stamnug)
- [bug] Enable field-related checks in materialize() not only in first call (#3906) (by Yi Xu)
- [Refactor] Remove all occurrences of print_preprocessed and print_ast (#3911) (by Xiangyun Yang)
- [perf] Avoid using property for simple attributes to reduce python overhead. (by Ailing Zhang)
- [opengl] Respect max_block_dim in ti.init (by Ailing Zhang)
- [dx11] Add DX11 device interface definition (#3880) (by quadpixels)
- [Refactor] Deprecate excepthook and completely remove _taichi_skip_traceback (#3902) (by Haidong Lan)
- [opengl] Optimize range_for for ndarrays (by Ailing Zhang)
- [Test] [aot] Add initial AOT CPP test (#3850) (#3899) (by Gabriel H)
- [refactor] Merge taichi/lang/linalg_impl.py into _funcs.py (by Ailing Zhang)
- [refactor] Remove import taichi in taichi/lang/quant_impl.py (by Ailing Zhang)
- [refactor] Remove import taichi in taichi/lang/util.py (by Ailing Zhang)
- [cuda] Increase saturating grid dim to reduce tail effect (#3855) (by Bo Qiao)
- [opengl] Reduce repeated read to args buffer. (by Ailing Zhang)
- [refactor] Remove import taichi from lang/init.py (#3889) (by Yi Xu)
- Revert "[Test][aot] Add initial AOT CPP test (#3850)" (#3890) (by Ye Kuang)
- [Android] [gui] Add initial support of Android in GGUI (#3845) (by Gabriel H)
- [Test][aot] Add initial AOT CPP test (#3850) (by Gabriel H)
- [Lang] Enable dynamic indexing of matrix field elements when possible (#3865) (by Yi Xu)
- [cuda] Hide debug info (#3878) (by Ye Kuang)
- [refactor] Remove legacy helper functions for testing (#3874) (by Yi Xu)
- [refactor] Remove import taichi from expr.py (#3871) (by Yi Xu)
- [refactor] Remove import taichi from field.py (#3870) (by Yi Xu)
- [refactor] Remove import taichi from mesh.py (#3869) (by Yi Xu)
- [refactor] Remove import taichi in ast_transformer (#3827) (by lin-hitonami)
- [refactor] Remove import taichi from struct.py (#3866) (by lin-hitonami)
- [autodiff] Provide stmt name for auto-diff related assert info (#3864) (by Mingrui Zhang)
- [lang] Cleanup parallel sort utility (#3858) (by Dunfan Lu)
- [refactor] Enforce destruction order of OpenGlRuntime. (#3861) (by Ailing)
- [refactor] Add _MatrixFieldElement class (#3862) (by Yi Xu)
- [opt] Add more accurate alias analysis for ExternalPtrStmt (#3859) (by Yi Xu)
- [mesh] A small fix for mesh loop syntax in python frontend (#3836) (by bx2k)
- [test] Add more complicated tests for building and destroying SNodeTrees (#3415) (by ysh329)
- [lang] Calculate dynamic indexing strides of matrix field elements (#3854) (by Yi Xu)
- [bug] Fix autodiff for ceil. (#3844) (by Ailing)
- [refactor] Remove import taichi in matrix.py (#3842) (by lin-hitonami)
- [Misc] [android] Support logging on Android platforms (#3849) (by Gabriel H)
- [opengl] Allocate new arg bufs per kernel launch (#3848) (by Ailing)
- [opengl] Only sync per ti.kernel when there's external array arg. (by Ailing Zhang)
- [refactor] Rename is_external_array -> is_array and arr_bufs_ -> ext_arr_bufs_ (by Ailing Zhang)
- [opengl] Only bind buffers per ti.kernel. (by Ailing Zhang)
- [misc] Version bump: v0.8.8 -> v0.8.9 (#3846) (by Yi Xu)
v0.8.8
Highlights:
- Android
- Add initial support of the platform (#3755) (by Gabriel H)
- Bug fixes
- Documentation
- Examples
- Fix constraint correction (#3740) (by Peng Yu)
- GUI
- Fix gui.text crash bug (#3770) (by Peng Yu)
- Language and syntax
- Use ndarray own memory allocator by default (#3843) (by Bo Qiao)
- User-friendly exception when copying between ti.field (#3442) (by J. Li)
- Enforce single deterministic return in taichi kernels and functions (#3795) (by lin-hitonami)
- Add "In" support in static scope (#3792) (by lin-hitonami)
- Support sparse solver datatype configuration (#3733) (by Peng Yu)
- Fix pylint rule C0321 (multiple-statements) and C0325 (superfluous-parens). (#3762) (by kxxt)
- Enforce members of a matrix field to have same shape (#3761) (by Yi Xu)
- Fix pylint rule W1309 (f-string-without-interpolation) (#3757) (by kxxt)
- LLVM backend (CPU and CUDA)
- Remove the dependency of llvm-as (#3562) (by Tianshu Xu)
- Metal backend
- Pass random seed to metal backend (#3724) (by Jian Zeng)
- Performance improvements
- Unnecessary assignment as it is redefined (#3753) (by skywf)
- Vulkan backend
Full changelog:
- [misc] Fix postsubmit status in README.md by replacing it with publishing checks (#3840) (by Velaciela)
- [Lang] Use ndarray own memory allocator by default (#3843) (by Bo Qiao)
- memset before reusing memory (#3841) (by Bo Qiao)
- [refactor] Recover 'in' operator in vector_to_fast_image() (#3839) (by Yi Xu)
- [Bug] [lang] Fix copying a Matrix/Struct in Taichi scope (#3838) (by Yi Xu)
- [refactor] Remove import taichi in common_ops.py (#3824) (by lin-hitonami)
- [vulkan] Fix command serial ordering & uses less queue submits (#3818) (by Bob Cao)
- [ci] Enforce using ninja on Windows in both release and normal testing (#3837) (by Yi Xu)
- [lang] Fix ndarray cuda dealloc when using preallocated memory (#3829) (by Bo Qiao)
- [Lang] User-friendly exception when copying between ti.field (#3442) (by J. Li)
- [refactor] Remove import taichi in kernel_impl.py (#3825) (by lin-hitonami)
- Update TaichiCXXFlags.cmake (#3823) (by Bob Cao)
- [bug] Fix static grouped for (#3822) (by lin-hitonami)
- [misc] Slient & non-blocking version check (#3816) (by Jiasheng Zhang)
- [doc] Editorial updates to contributor_guide.md (#3806) (by Vissidarte-Herman)
- [Vulkan] Update AOT Loader support to new API (#3766) (by Gabriel H)
- [Doc] Tweak API docstrings (#3820) (by Ye Kuang)
- [ci] Use clang+Ninja to build Taichi on windows (#3735) (by Bob Cao)
- [LLVM] Remove the dependency of llvm-as (#3562) (by Tianshu Xu)
- [build] No need to build main executable (#3804) (by Frost Ming)
- [lang] Add parallel sort utility (#3790) (by Dunfan Lu)
- [misc] [bug] Fix legacy benchmarks/run.py (#3812) (by rocket)
- [refactor] Move CompiledFieldData to aot namespace. (#3797) (by Ailing)
- [docs] Update README.md to include command to install nightly. (#3809) (by Ailing)
- [Lang] Enforce single deterministic return in taichi kernels and functions (#3795) (by lin-hitonami)
- [bug] Fix typo in opengl codegen. (#3801) (by Ailing)
- [bug] Use NdarrayRwKeys for ndarray host reader & writer caching. (#3805) (by Ailing)
- [Bug] [opengl] Modify the implementation of norm_sqr() (#3803) (by Yi Xu)
- [bug] Create core folder if it doesn't exist. (#3799) (by Ailing)
- [doc] Update CONTRIBUTING.md to include contribution opportunities (#3794) (by Ye Kuang)
- [Doc] Refactored contribution guidelines (#3789) (by Vissidarte-Herman)
- [refactor] Move ti.lib to ti._lib and move ti.core to ti._lib.core (#3731) (by lin-hitonami)
- [Lang] Add "In" support in static scope (#3792) (by lin-hitonami)
- [ir] [llvm] Add offset_bytes_in_parent_cell to SNode (#3793) (by Yi Xu)
- [bug] [opengl] Avoid using new as variable name in generated glsl. (#3786) (by Ailing)
- [refactor] Move diagnose.py and cc_compose.py to tools/ (#3788) (by lin-hitonami)
- [misc] Increase the kernel number recorded by CUPTI (#3780) (by rocket)
- [vulkan] Try to enable Vulkan test in macOS presubmit (#3456) (by Bob Cao)
- [llvm] [bug] Support atomic min/max for unsigned int type (#3779) (by Chang Yu)
- [Lang] Support sparse solver datatype configuration (#3733) (by Peng Yu)
- [gui] Fix vector to fast image (#3778) (by Bob Cao)
- [Example] [bug] Fix constraint correction (#3740) (by Peng Yu)
- [refactor] Remove get_type_size() from JITSession (#3777) (by Yi Xu)
- [Lang] Fix pylint rule C0321 (multiple-statements) and C0325 (superfluous-parens). (#3762) (by kxxt)
- [misc] Remove more deprecated APIs (#3774) (by Zack Wu)
- [GUI] Fix gui.text crash bug (#3770) (by Peng Yu)
- Fix spirv types (#3772) (by Dunfan Lu)
- [Doc] Fix a misspelling (#3773) (by 张皓)
- [Lang] Enforce members of a matrix field to have same shape (#3761) (by Yi Xu)
- [bug] Enable int32 atomic ops for opengl backend. (#3760) (by Ailing)
- [gui] Fix ggui canvas.set_image (#3767) (by Dunfan Lu)
- [test] Enable ndarray tests (#3759) (by Bo Qiao)
- [Lang] Fix pylint rule W1309 (f-string-without-interpolation) (#3757) (by kxxt)
- [Android] Add initial support of the platform (#3755) (by Gabriel H)
- Update dev_install.md (#3758) (by Vissidarte-Herman)
- [misc] Speed-up builds by removing LLVM includes from llvm_program.h (#3756) (by Bob Cao)
- [Perf] Unnecessary assignment as it is redefined (#3753) (by skywf)
- [ci] Update performance monitoring (#3741) (by rocket)
- [opengl] Don't serialize ext_arr_access in aot. (#3749) (by Ailing)
- [refactor] Move ti.randn out of taichi.lang. (#3742) (by Ailing)
- [bug] Temporarily remove runtime_ usage in aot_module_builder. (#3746) (by Ailing)
- [misc] Update title check to be more robust. (#3747) (by Ailing)
- [Metal] Pass random seed to metal backend (#3724) (by Jian Zeng)
- [Vulkan] Add support of loading AOT modules and fields (#3703) (by Gabriel H)
- [refactor] Let build_xxx in ASTTransformer return node.ptr instead of node (#3695) (by lin-hitonami)
- [doc] Fix a heading level in syntax (#3738) (by Ran)
- [misc] Remove deprecated Python APIs (#3725) (by Zack Wu)
- [ci] Auto generate manylinux dockerfile (#3699) (by Bo Qiao)
- version bump (#3736) (by lin-hitonami)
- [misc] Support Clang build on windows (#3732) (by Bob Cao)
- [test] Refine the way to test the laplace example (#3721) (by Yi Xu)
v0.8.7
Full changelog:
- [refactor] Merge taichi.misc into taichi.tools. (by Ailing Zhang)
- [refactor] Merge taichi.lang.types into taichi.types. (by Ailing Zhang)
- Add /bigobj flag to allow Debug builds on windows (#3730) (by Bob Cao)
- [misc] Add an option to skip version check (#3729) (by Jiasheng Zhang)
- [refactor] Separate Cpp examples into different files (#3728) (by Dunfan Lu)
- [ci] [bug] Fix release in CI (#3719) (by lin-hitonami)
- [Lang] Support annotated assignment (#3709) (by Ziwen Ye)
- [vulkan] Further decouple SPIRV codegen from Vulkan runtime (#3711) (by Dunfan Lu)
- [refactor] First clang-tidy pass (#3407) (by Taichi Gardener)
- [misc] Remove legacy Windows-related scripts (#3722) (by Yi Xu)
- [misc] Error handle and TLS (#3718) (by Jiasheng Zhang)
- fix tab and long line (#3669) (by lin-hitonami)
- [bug] Fix template arguments of ti.func with default values (#3716) (by lin-hitonami)
- [refactor] Rename CompiledProgram to CompiledTaichiKernel. (by Ailing Zhang)
- [refactor] Add doc string for ndarray element_shapes & field_dim. (by Ailing Zhang)
- Update euler.py (#3715) (by skywf)
- [misc] Use ccache & prefer Ninja over Make as cmake (#3712) (by Ailing)
- fix the script path in release workflow (#3713) (by Frost Ming)
- [ci] Use the same script for docker and system build & test (#3698) (by Frost Ming)
- [example] SPIR-V AOT example in C++ (#3707) (by Dunfan Lu)
- [LLVM] Add missing pre-processor macro when LLVM is disabled (#3702) (by Gabriel H)
- [example] Build cpp examples (#3705) (by Dunfan Lu)
- [doc] Improve the dev install doc (#3685) (by Ye Kuang)
- [cuda] Enable block splitting for cuda caching memory allocator (#3677) (by Bo Qiao)
- [ci] Run cpp tests in unix_docker_test.sh (#3693) (by Jian Zeng)
- [refactor] [opengl] Properly save both scalar args and array args. (by Ailing Zhang)
- [refactor] [opengl] For each taichi kernel, save a {kernel_name, CompiledProgram} pair instead of a vector. (by Ailing Zhang)
- [refactor] [opengl] Use CompiledOffloadedTask instead of CompiledKernel. (by Ailing Zhang)
- [refactor] [opengl] Remove dtype & total_size_hint in serialized aot file. (by Ailing Zhang)
- [Lang] Make example_any_arrays optional. (by Ailing Zhang)
- [Lang] Add optional element_shapes & field_dim annotation to ndarray. (by Ailing Zhang)
- [vulkan] Isolate SPIR-V codegen, cleanup Vulkan backend (#3676) (by Bob Cao)
- [refactor] Turn off empty root buffer warning for finalize_for_aot. (#3681) (by Ailing)
- [misc] Handle outermost error and change metadata server address to latest (#3686) (by Jiasheng Zhang)
- [refactor] Remove ext_arr_map in favor of CompiledArrayData. (by Ailing Zhang)
- [refactor] Remove unused functions in misc. (#3671) (by Ailing)
- [ci] Fix cancel workflow to only cancel the same branch (#3678) (by Frost Ming)
- [refactor] Rename testing.py to _testing.py (#3668) (by Yi Xu)
- [Vulkan] add initial support of AOT (#3647) (by Gabriel H)
- [refactor] Move image.py from misc/ to tools/ and remove it from top level package (#3672) (by Yi Xu)
- [opengl] [refactor] Expose use_gles in CompileConfig. (#3662) (by Ailing)
- checkout the repo for cancel (#3670) (by Frost Ming)
- [refactor] [opengl] Move ndarray aot information inside kernels. (#3658) (by Ailing)
- [ci] Add sccache to ci building process on Linux and Mac jobs (#3559) (by lin-hitonami)
- [refactor] Remove np2ply, patterns, video from top level package (#3660) (by Yi Xu)
- [ci] Set token in cancel workfow (#3664) (by Frost Ming)
- [ci] Run code format check for doc-only changes as well. (#3665) (by Ailing)
- [bug] Fix postsubmit (#3661) (by lin-hitonami)
- [cuda] Query the max block count from the hardware (#3657) (by Bob Cao)
- Restructured dev_install.md (#3616) (by Vissidarte-Herman)
- [error] Let type_check throw TypeError (#3650) (by lin-hitonami)
- Attempt to unite postsubmit and presubmit (#3654) (by Frost Ming)
- [Refactor] Deprecate Expr::operator= (#3596) (by Jun)
- Use helper fill function (#3655) (by Bo Qiao)
- [perf] Accelerate _inside_class() (#3653) (by Yi Xu)
- [Bug] [lang] Fix copying Matrix/StructField elements in Taichi scope (#3649) (by Yi Xu)
- [refactor] Ignore filename prefix in opengl aot files. (#3648) (by Ailing)
- [error] Add line number and source code to exception (#3637) (by lin-hitonami)
- [Lang] Cuda caching allocator for ndarray 1/n (#3581) (by Bo Qiao)
- [refactor] Move GUI from misc to ui. (by Ailing Zhang)
- [refactor] Get rid of tools/file.py (#3645) (by Yi Xu)
- [refactor] Get rid of tools/messenger.py. (by Ailing Zhang)
- [refactor] Get rid of ti.task. (by Ailing Zhang)
- [refactor] Remove primitive_types module in top level package. (by Ailing Zhang)
- [Bug] [lang] Fix copying a Matrix/Struct from Python scope to Taichi scope (#3638) (by Yi Xu)
- [Lang] Add option short_circuit_operators for short-circuiting boolean ops (#3632) (by daylily)
- Fix build script for docker build (#3629) (by Frost Ming)
- [gui] Fix incorrect shading when first calling mesh/particles (#3628) (by Chang Yu)
- [misc] Temporarily disable performance monitoring for testing offline (#3626) (by rocket)
- [refactor] Get rid of ASTTransformerTotal and rename IRBuilder to ASTTransformer (#3610) (by lin-hitonami)
- [bug] Correctly support serializing maps & vectors to json. (by Ailing Zhang)
- [bug][opengl] Only add atomicAdd functions in generated code for arrs when they're used. (by Ailing Zhang)
- [refactor] Do not expand to absolute path for saved shaders. (by Ailing Zhang)
- Respect drawing order specified by user (#3614) (by Dunfan Lu)
- [bug] Revert part of #3569 so that tests are not skipped. (#3620) (by Ailing)
- [lang] Disable signal handlers when TI_DISABLE_SIGNAL_HANDLERS=1 (#3613) (by Ye Kuang)
- [misc] Do not let check_version block users (#3619) (by Jiasheng Zhang)
- fix unix build script for nightly build (#3618) (by Frost Ming)
- [Lang] Implement opt_level for accelerating compiling (#3434) (by squarefk)
- [gui] Fix vulkan glfw image count (#3604) (by Bob Cao)
- [misc] Remove legacy torch_io.py (#3609) (by Yi Xu)
- [bug] Enable reassignment of scalar arguments (#3607) (by lin-hitonami)
- [misc] Fix upload release error handling (#3606) (by Jiasheng Zhang)
- [opengl] Serialize ndarrays and ndarray-based kernels in AOT. (by Ailing Zhang)
- [opengl] Support taichi ndarray on opengl backend and enable tests. (by Ailing Zhang)
- [llvm] Make taichi's Ndarray carry a ptr to its DeviceAllocation. (by Ailing Zhang)
- Temporarily disable flaky test (#3603) (by Bo Qiao)
- [Opt] [ir] [refactor] Remove exception from simpify pass (#3317) (by lin-hitonami)
- [misc] Version bump: v0.8.6 -> v0.8.7 (#3602) (by Jiasheng Zhang)
- [mesh] Make ti.Mesh compatible with dynamic index (#3599) (by Yi Xu)
[DO NOT USE] v0.8.6
Notes:
We added a function to periodically check version information on ti.init
to remind users if a new version has been released. However, this function is not fully tested when 0.8.6 is released, and the error handling is not well-implemented. Taichi crashes when it fails to check the version (maybe due to network issues). For this reason, 0.8.6 is removed from the official releases in PyPI. Please upgrade to a newer version if you are on this version. We are sorry for the inconvenience.
Full changelog:
- [Lang] Check version when importing taichi instead of when using ti (#3598) (by Jiasheng Zhang)
- [Lang] Add ti.round op (#3541) (by gaoxinge)
- [Bug] [ir] Fix the IdentifyValuesUsedInOtherOffloads pass (#3597) (by Yi Xu)
- [ci] Fix release (#3594) (by Jiasheng Zhang)
- [perf] Add async_mode restriction to ti.sync() of external_arrays in class Kernel (#3535) (by rocket)
- [Lang] Add time check before performing version check (#3589) (by Jiasheng Zhang)
- [Doc] Fix example link in README. (#3584) (by egolearner)
- [gui] GGUI initial alpha transparency support (#3592) (by Bob Cao)
- [ci] Turn off vulkan build on macos (#3591) (by Jiasheng Zhang)
- [ci] Fix release bug (#3585) (by Jiasheng Zhang)
- [misc] Update documentations after the examples directory changed (#3587) (by Velaciela)
- [bug] Fix missing tests/ folder in postsubmit & release workflows. (#3583) (by Ailing)
- [refactor] Avoid copying examples/ folder when building taichi. (by Ailing Zhang)
- [Test] Remove ti test from taichi package. (by Ailing Zhang)
- [ci] Fix postsubmit mac build failure (#3579) (by Jiasheng Zhang)
- [misc] MoltenVK dynamic library & allow overriding CLANG_EXECUTABLE (#3565) (by Bob Cao)
- [Lang] Add get_element_size for ndarray (#3576) (by Bo Qiao)
- [ci] Remove usage of build.py in favor of setup.py (#3537) (by Frost Ming)
- [Bug] [llvm] Fix FP<->UInt castings (#3560) (by Yi Xu)
- [Bug] [vulkan] Fix data type alignment for arguments and return values (#3571) (by Yi Xu)
- ci (#3569) (by Tianshu Xu)
- [Bug] [metal] Fix data type alignment for arguments and return values (#3564) (by Yi Xu)
- [Mesh] [opt] Support mesh-for for multi-CPUs & demote atomic stmts in BLS for x64 (by Chang Yu)
- [Mesh] Remove Matrix.with_entries() & support ti.mesh_patch_idx() (by Chang Yu)
- [Mesh] Support mesh-for for CPU backend (by Chang Yu)
- [Mesh] [refactor] Migrate ti.Mesh to refactored frontend (by Chang Yu)
- [Mesh] Add type_check for ti.Mesh frontend (by g1n0st)
- [Mesh] Add CI tests for ti.Mesh (by Chang Yu)
- [Mesh] Decouple metadata (by Chang Yu)
- [Mesh] Fix misc & restore code formatter (by g1n0st)
- [Mesh] Reduce SNode trees allocation for ti.Mesh (by Chang Yu)
- [Mesh] Refactor serialize() for frontend IR (by Chang Yu)
- [Mesh] Fix bugs to enable reordered mesh attribute (by Chang Yu)
- [Mesh] Fix bugs to enable nested relation access (by Chang Yu)
- [Mesh] [refactor] Refactor frontend (by Chang Yu)
- [Mesh] [opt] Demote no relation access mesh-for to range-for (by Chang Yu)
- [Mesh] Quick fix bugs after rebase (by g1n0st)
- [Mesh] Fix Layout.AOS (by Chang Yu)
- [Mesh] Quick fix bugs after rebase (by g1n0st)
- [Mesh] [fix] Fix failed caching mapping only (by Chang Yu)
- [Mesh] Add experimental compile configs (by Chang Yu)
- [Mesh] [refactor] Remove MeshAttribute in mesh class (by Chang Yu)
- [Mesh] [opt] Make mesh attribute local (by Chang Yu)
- [Mesh] [Lang] Quick fix rebase conflicts (by g1n0st)
- [Mesh] Add analyzer to determine which mapping should be cache (by g1n0st)
- [Mesh] Clean MeshAttributeSet in DecoratorRecorder (by Chang Yu)
- [Mesh] [refactor] Add global to reordered index mapping type (by Chang Yu)
- [Mesh] [refactor] Unified MeshRelationAccessStmt and MeshRelationSizeStmt (by g1n0st)
- [Mesh] [refactor] Rename to_string functions (by g1n0st)
- [Mesh] Use ti.axes instead of ti.indices (by g1n0st)
- [Mesh] Add ti.mesh_local() (by g1n0st)
- [Mesh] [refactor] Divide make_mesh_index_mapping_local pass into multiple functions (by g1n0st)
- [Mesh] [test] Delete outdated mesh-for test (by g1n0st)
- [Mesh] [opt] Optimize reordered index mapping case (by g1n0st)
- [Mesh] [refactor] from_type() as statement attribute (by g1n0st)
- [Mesh] Add optimization pass to make index mapping local (by g1n0st)
- [Mesh] Set MeshTaichi as extension (by g1n0st)
- [Mesh] [refactor] Rename make_mesh_attribute_local to demote_mesh_statements (by g1n0st)
- [Mesh] Support low-to-high and same-order relation access (by g1n0st)
- [Mesh] Add analysis pass to gather mesh thread local variables (by g1n0st)
- [Mesh] Add analysis pass to gather mesh_for relation types (by g1n0st)
- [Mesh] Clean up field template based residual & fix bugs (by g1n0st)
- [Mesh] Id property to interact with non-mesh field (by g1n0st)
- [Mesh] MeshRelationAccessStmt & MeshIndexConversionStmt backend implementation (by g1n0st)
- [Mesh] Frontend Impl (by g1n0st)
- [Mesh] Fix code format (by g1n0st)
- [Mesh] [IR] Add MeshRelationAccessStmt & MeshIndexConversionStmt (by g1n0st)
- [IR] Quick fix rebase conflict (by g1n0st)
- [Mesh] [Lang] New ti.Mesh frontend class prototype & MeshRelationSize statement and expression (by g1n0st)
- [Mesh] Fix mesh-for in multiple passes (by g1n0st)
- [Mesh] Fix type_check pass for body_prologue in OffloadedStmt (by g1n0st)
- [Mesh] Add make_mesh_thread_local pass (by g1n0st)
- [Mesh] Make the type of loop in MeshPatchIndexStmt explicit (by g1n0st)
- [Mesh] Make get num_patches behavior correctly (by g1n0st)
- [Mesh] Removed wildcard import in python (by g1n0st)
- [Mesh] Add MeshPatchIndexStmt statement (by g1n0st)
- [Mesh] Add a backend Mesh class prototype & relation based mesh_for (by g1n0st)
- [Mesh] [refactor] Create a new pass called make_mesh_attribute_local (by g1n0st)
- [Mesh] A simple BLS pass to do the local to global mapping (by bx2k)
- [Mesh] A Frontend ti.Mesh class prototype (by g1n0st)
- [Mesh] Fix meshfor at simplify pass (by bx2k)
- [Mesh] A simple meshfor frontend enable to print index (by bx2k)
- [Mesh] Add Meshfor prototype with dirty hacks (by bx2k)
- [LLVM] Fix casting f64 to f16 (#3561) (by Tianshu Xu)
- [misc] Improve the mechanism to find clang (#3379) (by Tianshu Xu)
- [CI] Add version database update in CD (#3540) (by Jiasheng Zhang)
- [Doc] Move build Taichi from source one level up (#3551) (by tison)
- [Misc] [refactor] Move symbol versioning to a new file (#3426) (by Bo Qiao)
- [misc] Fix redefined reset function (#3227) (#3521) (by u2386)
- [ci] Dockerfile for CPU manylinux2014 compliant (#3542) (by Bo Qiao)
- [Lang] [bug] Fix numpy from and to ndarray matrix (#3549) (by Bo Qiao)
- [Lang] Remove disable_local_tensor and empty() from Matrix (#3546) (by Yi Xu)
- [refactor] Remove with_entries() and keep_raw from Matrix (#3539) (by Yi Xu)
- [lang] Limit torch based ndarray to cpu/cuda backend. (#3545) (by Ailing)
- [Refactor] Fix typo and type in docstring, and format too long string (#3530) (by gaoxinge)
- [Lang] Add check version function to taichi main (#3526) (by Jiasheng Zhang)
- [bug] Remove fallback in C++ code (#3538) (by lin-hitonami)
- [refactor] Remove empty_copy() and copy() from Matrix/Struct (#3536) (by Yi Xu)
- [misc] Reorg CI stages (#3525) (by Tianshu Xu)
- [ci] Remove build_and_test_cpu_required from CI to save time (#3534) (by lin-hitonami)
- [refactor] Remove variable() of Matrix/Struct and empty() of Matrix/StructType (#3531) (by Yi Xu)
- [ci] Disable arch fallback on CI (#3474) (by lin-hitonami)
- [refactor] Decouple KernelProfilerBase::sync() from Program::synchronize() (#3504) (by rocket)
- [Lang] Add deepcopy for ndarray (#3473) (by Bo Qiao)
- [Lang] Fix pylint rule E1101 (#3500) (by DeepDuke)
- [Lang] Implement ti.global_thread_idx (#3319) (by Shay P.C)
- [refactor] Remove the old AST builder from python frontend (#3527) (by lin-hitonami)
- [Lang] Remove disable_local_tensor in most cases (#3524) (by Yi Xu)
- [opengl] Use separate ssbo for external arrays. (by Ailing Zhang)
- [refactor] Rename Context to RuntimeContext. (by Ailing Zhang)
- [Lang] Enable local tensors as writeback binary operation results (#3517) (by Yi Xu)
- fix (#3523) (by Dunfan Lu)
- [metal] Add a TI_WITH_METAL option (#3510) (by Dunfan Lu)
- [Lang] Fix pylint rule W0621 (#3498) (by ZONEPG)
- [refactor] Enable the new ast builder by default (#3516) (by lin-hitonami)
- [ci] Add a helper script for Dockerfile generation. (#3509) (by Chengchen(Rex) Wang)
- [ci] Fix release action now being able to be triggered manually (#3520) (by Jiasheng Zhang)
- Create CONTRIBUTING.md (#3518) (by Tianshu Xu)
- Update unix_build.sh (#3511) (by Bob Cao)
- [ci] Minor fix for windows release upload. (#3513) (by Ailing)
- [llvm] Add a TI_WITH_LLVM option (#3507) (by Dunfan Lu)
- [CUDA] Fix a misuse of std::move: address of stack memory associated with temporary object of type std::lock_guardstd::mutex returned to caller (#3502) (by Twice)
- [Lang] Add W0101 rule for pylint (#3497) (by Ligeng Zhu)
- Add PEP 517 build specification (#3495) (by Frost Ming)...
v0.8.5
Full changelog:
- [misc] Fix python wheel versioning. (#3450) (by Ailing)
- [misc] Version bump: v0.8.4->v0.8.5. (#3447) (by Ailing)
- [IR] Add type inference for loop variables (#3437) (by Yi Xu)
- [LLVM] Fix link (#3443) (by Tianshu Xu)
- [IR] Add type_check for RangeAssumption/LoopUnique/ExternalTensorShapeAlongAxisExpression (#3436) (by Yi Xu)
- [llvm] Support atomic operations of f16 (#3428) (by Tianshu Xu)
- [Doc] Put back content from old docs/lang/api/atomic.md (#3440) (by Yi Xu)
- [refactor] Add Assert, BoolOp, NamedExpr and dict to the new AST builder (#3398) (by lin-hitonami)
- [Bug] Revert #3428 (#3438) (by Tianshu Xu)
- [gui] GGUI Tests (#3430) (by Dunfan Lu)
- [gui] Fix canvas.lines on macOS (#3432) (by Dunfan Lu)
- [ci] Fix aws machine not removing container (#3435) (by Jiasheng Zhang)
- [gui] Show f16 image as f32. (#3433) (by Ailing)
- [ci] Move required cpu check to AWS machine (#3427) (by Jiasheng Zhang)
- [Refactor] Simplify runtime function definition (#3429) (by Tianshu Xu)
- [lang] [refactor] Use preallocated memory via device allocation for Ndarray (#3395) (by Bo Qiao)
- [refactor] Add ListComp and DictComp to the new AST builder (#3400) (by lin-hitonami)
- [ci] Add build script for win (#3410) (by Frost Ming)
- [OpenGL] Add mem_offset_in_parent to serialized file in AOT. (#3418) (by Ailing)
- Update gui.md: comprehend widgets example (#3424) (by FantasyVR)
- [refactor] Add for and while to the new frontend AST builder (#3353) (by lin-hitonami)
- [CI] Recheck the title format when user updates the title (#3403) (by Manjusaka)
- [Refactor] Use wrapped create_call (#3421) (by Tianshu Xu)
- [Doc] Update dev install about m1 prebuilt llvm. (#3419) (by Ailing)
- [opengl] Save opengl aot data in json format. (#3417) (by Ailing)
- [IR] Add type_check for expressions related to fields and matrices (#3377) (by Yi Xu)
- [misc] Update "get_largest_pot" in scalar.h + Bug Fix (#3405) (by Niclas Schwalbe)
- [refactor] Remove Matrix.new (#3408) (by Yi Xu)
- [refactor] Remove handling for real types in set_arg_int. (#3388) (by Ailing)
- [CI] skip the full test when the PR just get Docs change (#3399) (by Manjusaka)
- [LLVM] Fix logging formats (#3404) (by Tianshu Xu)
- Update GLFW (#3406) (by Bob Cao)
- [IR] Fix continue statement in struct for and add a related test (#3282) (by bx2k)
- Fix non 4 byte element external array in SPIR-V codegen & enable f16 test for Vulkan (#3396) (by Bob Cao)
- [misc] Add new issues templates (#3390) (by Tianshu Xu)
- [refactor] Add SparseMatrixBuilder and any_array support in kernel argument in the new AST builder (#3352) (by lin-hitonami)
- [Doc] Put back content from old docs/lang/api/arithmetics.md (#3394) (by Yi Xu)
- [Refactor] Move the cuda codegen part of atan2/pow to codegen_cuda.cpp (#3392) (by Jian Zeng)
- [Doc] Fix an API typo in GGUI doc (#3397) (by Chang Yu)
- [example] Create inital_value_problem.py (#3383) (by Niclas Schwalbe)
- [gui] Allowing recreating GGUI windows after ti.reset() (#3389) (by Dunfan Lu)
- [ci] Add clang-tidy in CI (#3354) (by Tianshu Xu)
- [metal] Add mem_offset_in_parent to AOT module (#3245) (by Ye Kuang)
- [vulkan] FP16 support, fix a few bugs & warnings (#3387) (by Bob Cao)
- [Lang] fp16 interacts with pytorch. (by Ailing Zhang)
- [llvm] Basic f16 support (by Ailing Zhang)
- [cuda] Perf: Use the min between saturation grid dim and const range-for dim (#3314) (by Bob Cao)
- [IR] Add type_check for TernaryOpExpression (#3381) (by Yuheng Zou)
- [lang] [refactor] Use DeviceAllocation for Ndarray (#3366) (by Bo Qiao)
- [Test] Fix uninitialized tests for ndarray (#3365) (by Bo Qiao)
- repush (#3376) (by Ye Kuang)
- feat: define str method for DataType (#3370) (by Jian Zeng)
- [opengl] Do not use macros in GLSL codegen (#3369) (by Ye Kuang)
- [Lang] Call external function with llvm bitcode (#2873) (by squarefk)
- [opengl] Off-screen context using EGL & Support GLES (#3358) (by Bob Cao)
- [misc] Move configured headers out of the binary directory (#3363) (by Tianshu Xu)
- [misc] Use configured headers to track version and commit hash (#3349) (by Tianshu Xu)
- [IR] Add type_check for UnaryOpExpression (#3355) (by Yi Xu)
- [gui] Fix IMGUI when GGUI is running in headless mode (#3357) (by Dunfan Lu)
- [doc] Ggui image IO and headless docs (#3359) (by Dunfan Lu)
- [ir] Add missing constructors for TypedConstant (#3351) (by Yi Xu)
- [Lang] Better type error messages (#3345) (by Yi Xu)
- [gui] Headless GGUI (#3348) (by Dunfan Lu)
- [refactor] Add IfExp, static assign and AugAssign to the new frontend AST builder (#3299) (by lin-hitonami)
- [Refactor] Python frontend refactor: build_call part, support format print and fstring (#3342) (by Jiasheng Zhang)
- [refactor] Add compare to the new python frontend ast builder (#3344) (by lin-hitonami)
- [gui] Fix bug where VBO/IBO cannot exceed 128 MB(#3347) (by Dunfan Lu)
- [ci] Set GITHUB_CONTEXT for performance monitoring (#3343) (by rocket)
- [opengl] Only run preprocess_kernels when glslc is available. (#3341) (by Ailing)
- [CI] Linux CD containerization (#3339) (by Jiasheng Zhang)
- [opengl] Expose allow_nv_shader_extension in compileconfig. (#3340) (by Ailing)
- [ci] Update windows postsubmit job timeout to 90mins. (#3336) (by Ailing)
- [ci] Update postsubmit job performance_monitoring (#3296) (by rocket)
- [benchmark] Store the benchmark results as json files (#3294) (by rocket)
- [docs] Only preview english doc. (#3338) (by Ailing)
- [IR] Support frontend type inference in simple cases (#3302) (by Yi Xu)
- [gui] GGUI Image IO (well, it's actually just O...) (#3333) (by Dunfan Lu)
- [opengl] Provide an option to disable NV extensions during codegen (#3331) (by Ye Kuang)
- [OpenGl] Support preprocessing glsl code in aot. (by Ailing Zhang)
- [OpenGl] Set result_buffer for opengl aot. (by Ailing Zhang)
- [vulkan] Fix GGUI (#3330) (by Dunfan Lu)
- [misc] Port taichi to FreeBSD (#3325) (by Inoki)
- [Refactor] Fix compiler warnings (#3322) (by Tianshu Xu)
- Fix GL Device (#3315) (by Bob Cao)
- [Doc] Update dev install about m1. (#3321) (by Ailing)
- [Lang] Support f-string (by Jian Zeng)
- [OpenGl] Merge Retr SSBO into Args. (#3313) (by Ailing)
- [CI] Containerize CI (#3291) (by Jiasheng Zhang)
- [vulkan] Release vulkan on macOS (#3305) (by Dunfan Lu)
- [GUI] Fix re-use buffer bug in ggui (#3311) (by YuZhang)
- [ci] Add Dockerfile to support minimum CPU (#3277) (by Bo Qiao)
- [Lang] Add suppress_warning argument to ti.matrix initialization (#3310) (by Zhehao Li)
- Remove Vulkan SDK dependency (#3307) (by Bob Cao)
- [Bug] Add missing integral datatype support for ti.min/ti.max (#3248) (by FantasyVR)
- [opengl] Remove extra semicolon in glsl generated code. (#3309) (by Ailing)
- Merge GLBufId::Extr into Args. (#3306) (by Ailing)
- [opengl] Fix typo in printing glsl kernel. (#3308) (by Ailing)
- [Doc] update the security email address (#3297) (by Manjusaka)
- [opengl] Recover GLSL printing (#3300) (by Ye Kuang)
v0.8.4
Full changelog:
- [misc] Version bump: v0.8.3->v0.8.4 (#3295) (by rocket)
- [refactor] Finalize root FieldsBuilder only when it is not finalized (#3288) (by Ye Kuang)
- [bug] Add default value to print_preprocessed_ir (#3292) (by lin-hitonami)
- [Doc] Correct the note about dev installation (#3289) (by Tianshu Xu)
- [refactor] [misc] Refactoring benchmark code for performance monitoring (#3269) (by rocket)
- [Lang] Support more SNode trees for LLVM backends (#3279) (by Chang Yu)
- [Refactor] Taichi frontend AST builder without generating code (#3037) (by lin-hitonami)
- [ci] Reduce the artifacts retention duration to 20 days (#3286) (by Ye Kuang)
- [ir] [refactor] Remove ptr_if_global in C++ Expr class (#3285) (by Yi Xu)
- [doc] Add using clang++ for submodules in dev install instructions (#3273) (by Mingrui Zhang)
- Update sparse.md (#3266) (by rockeyshao)
- [vulkan] Indexed load codegen (#3259) (by Bob Cao)
- [opengl] Remove listgen support (#3257) (by Ye Kuang)
- [llvm] Separate compile_snode_tree_types from materialize_snode_tree in LLVM backends (#3267) (by Yi Xu)
- [Lang] Add element shape to Ndarray (#3264) (by Bo Qiao)
- Update write_test.md (#3263) (by FantasyVR)
- [ci] Add benchmark to postsubmit workflow (#3220) (by rocket)
- [ci] Move extract zip into ci_download.py (#3251) (by Frost Ming)
- [Lang] Fix string format not support keywords format (#3256) (by yihong)
- [vulkan] Force u8 capability on Apple (#3252) (by Dunfan Lu)
- [vulkan] Catch std::runtime_error from button_id_to_name/buttom_name_to_id. (#3260) (by 0xzhang)
- [cuda] Add CUDA version check (#3249) (by 0xzhang)
- Fix Vulkan GGUI on CPU rendering (swiftshaders) (#3253) (by Bob Cao)
- fix int / uint types & fix atomic op type mismatches (#3179) (by Bob Cao)
- [test] Fix unrecognized test names in test_bls_assume_in_range.py (#3250) (by Yi Xu)
- [ci] Add non-root user and conda environment (#3226) (by Bo Qiao)
- [vulkan] Support for ti.u8 in vulkan (#3247) (by Dunfan Lu)
- [lang] Make dynamic indexing compatible with BLS (#3244) (by Yi Xu)
- [Bug] Fix indentation error when using tab indents (#3203) (by YuZhang)
- [Bug] Remove the dataclass decorator from CuptiMetric, as it is not supported in Python 3.6 (#3246) (by rocket)
- [opt] Enable CFG optimization for local tensors (#3237) (by Yi Xu)
- [bug] Fix silent int overflow in indice calculation. (#3177) (by Ailing)
- [doc] Update build badges on readme file. (#3235) (by Chengchen(Rex) Wang)
- [Bug] Fix the always-in-cpu from_numpy in ti.ndarray (#3239) (by Yi Xu)
- [ci] Fix ti testing with no supported arch. (#3236) (by Ailing)
- [refactor] Get rid of unnecessary snodes map. (#3234) (by Ailing)
- [lang] Make dynamic indexing compatible with grouped loop indices of struct fors (#3218) (by Yi Xu)
- [Lang] Add a new transformation pass to rename module alias (#3180) (by Ce Gao)
- [doc] Add doc string for _logging.py (#3209) (by 0xzhang)
- [Refactor] Improve the core module code and remove unused imports (#3225) (by Frost Ming)
- [doc] Update docsite link (#3232) (by Yuanming Hu)
- [vulkan] Enable GGUI for Vulkan Backend (#3176) (by Dunfan Lu)
- [opengl] Decouple AOT builder from the runtime (#3207) (by Ye Kuang)
- [vulkan] Fix fence timeout (#3229) (by Dunfan Lu)
- [lang] Make dynamic indexing compatible with grouped loop indices of ndrange fors (#3228) (by Yi Xu)
- [lang] [opt] Memory allocator for ti.ndarray (#3020) (by Bo Qiao)
- [refactor] Optimize Expression::serialize (#3221) (by 庄天翼)
- [vulkan] Trying to fix external memory allocation (#3222) (by Bob Cao)
- [doc] Remove the reference to libtinfo5 (#3219) (by Ye Kuang)
- Constrain the python version in package metadata (#3217) (by Frost Ming)
- [Example] Fix the ti example problems of sparse matrix demos (#3215) (by Jiafeng Liu)
- Revert "[misc] Revert #3175 #3164 (#3185)" (#3212) (by Bob Cao)
- [Lang] [bug] Fix support staticmethod decorator for data_oriented class (#3186) (by yihong)
- [Doc] Update sparse_matrix.md (#3200) (by FantasyVR)
- [Lang] Use ti.linalg.sparse_matrix_builder as kernel parameters (#3210) (by Jiafeng Liu)
- [vulkan] Clear unnecessary GLSL shader files on Vulkan backend. (#3211) (by 0xzhang)
- [refactor] [CUDA] Add kernel attributes for KernelProfiler (#3196) (by rocket)
- [refactor] [misc] Add device name for KernelProfiler (#3194) (by rocket)
- [opengl] Make AOT builder independent of the runtime (#3204) (by Ye Kuang)
- [llvm] Fix llvm sparse when there are more than 1 snode trees (#3205) (by Dunfan Lu)
- [opengl] OpenGL AOT Module Builder & Making GL CompiledProgram serializable (#3202) (by Bob Cao)
- [Lang] Reuse sparse matrix builder (#3199) (by FantasyVR)
- [ci] Fix ci shell scripts do not return error code (#3189) (by Jiasheng Zhang)
- [Lang] Fixed pylint error C0121 (#3135) (by deepakdinesh1123)
- [gui] Accept array of vectors as indices for lines and triangles (#3181) (by Jiasheng Zhang)
- [vulkan] Fix some vulkan stuff (#3198) (by Dunfan Lu)
- [refactor] Remove redundant code in snode_rw_accessors_bank (#3192) (by Yi Xu)