Taichi

Latest version: v1.7.1

Safety actively analyzes 638396 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 22

0.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**
- Support sparse matrix builder datatype configuration (4411) (by **Peng Yu**)
- Support type annotations for literals (4440) (by **Yi Xu**)
- Support simple matrix slicing (4420) (by **Xiangyun Yang**)
- Support kernel to return a matrix type value (4062) (by **Xiangyun Yang**)
- **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**)

0.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:

Python
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:

Python
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 &times; 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.

Apache
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](https://github.com/taichi-dev/taichi/issues/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](https://docs.google.com/spreadsheets/d/1FMECCsPMVDjzFN9p3Xy2e4CaA-ru9-lIHb1if-7zgLY/edit#gid=0).

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:

Python
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:

Plain%20Text
[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:

Plain%20Text
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](https://docs.taichi.graphics/) and incorporated [API reference](https://docs.taichi.graphics/api/) 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](https://github.com/taichi-dev/taichi/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:

- 4086
- 4183

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)`, use `my_vec2i([5, 10])` for a vector *object*.
- For simplicity, we preserve `ti.vector([1, 2])` as a shortcut for `ti.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](https://docs.google.com/spreadsheets/d/1FMECCsPMVDjzFN9p3Xy2e4CaA-ru9-lIHb1if-7zgLY/edit#gid=0) 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] Remove support for dynamic snode (by **Ailing Zhang**)
- [error] Let deprecation warnings display only once (4346) (by **Lin Jiang**)
- [ci] Fix generate_example_videos.py (4347) (by **Ailing**)
- [test] Add a test for autodiff/regression (4322) (by **TinyBox**)
- [ci] Install requirements and matplotlib for GPU tests (4336) (by **Bo Qiao**)
- [gui] [refactor] Avoid exposing different APIs with different GGUI_AVAILABLE values (4329) (by **Yi Xu**)
- [lang] Remove logical_and and logical_or from TaichiOperation (4326) (by **Lin Jiang**)
- [lang] Add deprecation warnings to atomic ops (4325) (by **Lin Jiang**)
- [refactor] Allow more build types from setup.py (4313) (by **Bo Qiao**)
- [refactor] make class Expr constructor explicit (4272) (by **Retrospection**)
- [doc] More revision on a new language (4321) (by **Ye Kuang**)
- [lang] Hide internal apis about Fields (4302) (by **Xiangyun Yang**)
- [Doc] Avoid log(0) problem in _funcs._randn() and update primitive_types.py (4317) (by **Zhao Liang**)
- [refactor] Remove Ndarray torch implementation and tests (4307) (by **Bo Qiao**)
- [Doc] Revise "Why a new programming language" (4306) (by **Ye Kuang**)
- [lang] Move sparse_matrix_builder from taichi.linalg to taichi.types (4301) (by **Ailing**)
- [lang] Make ti.cfg an alias of runtime cfg (4264) (by **Ailing**)
- [refactor] Refactor ForLoopDecoratorRecorder (4309) (by **PGZXB**)
- [lang] Hide dtype and needs_grad from SNode (4308) (by **Yi Xu**)
- [vulkan] Reduce runtime host overhead (4282) (by **Bob Cao**)
- [lang] Remove Matrix.value (4300) (by **Lin Jiang**)
- [lang] Hide internal APIs of FieldsBuilder (4305) (by **Yi Xu**)
- [lang] Hide pad_key and ndarray*_to_numpy in Ndarray (4298) (by **Bo Qiao**)
- [lang] Hide internal functions in SNode and _Root (4303) (by **Yi Xu**)
- [lang] Hide ndarray*_from_numpy (4297) (by **Bo Qiao**)
- [lang] Hide internal functions in Matrix and Struct (4295) (by **Lin Jiang**)
- [lang] Hide subscript in Matrix (4299) (by **Lin Jiang**)
- [lang] Hide initialize_host_accessor in Ndarray (4296) (by **Bo Qiao**)
- [lang] Hide internal functions in TaichiOperation (4288) (by **Lin Jiang**)
- [lang] Hide get_element_size and get_nelement in Ndarray (4294) (by **Bo Qiao**)
- [lang] Hide fill_by_kernel in Ndarray (4293) (by **Bo Qiao**)
- Hide data handle (4292) (by **Bo Qiao**)
- [lang] Remove CompoundType from taichi.types (4291) (by **Ailing**)
- [lang] Hide get_addr and type_assert in api docs (4290) (by **Ailing**)
- [lang] Only expose start_recording/stop_recording for now (4289) (by **Ailing**)
- [docs] Hide unnessary methods in annotation classes (4287) (by **Ailing**)
- [llvm] Use GEP for array access instead of ptrtoint/inttoptr (4276) (by **Yi Xu**)
- [lang] Fix bls_buffer allocation of x64 crashed in py3.10 (4275) (by **Chang Yu**)
- [misc] Code cleanup in benchmarks (4280) (by **rocket**)
- [doc] Improve operators page (4073) (by **Lin Jiang**)
- [spirv] Fix buffer info compare to fix external array bind point (4277) (by **Bob Cao**)
- [bug] Disallow function definition inside ti.func/kernel (4274) (by **Lin Jiang**)
- [refactor] Remove global instance of DecoratorRecorder (4254) (by **PGZXB**)
- [misc] Add stencil_2d to micro-benchmarks (4176) (by **rocket**)
- [refactor] Remove support for raise statement (4262) (by **Lin Jiang**)
- [refactor] Re-expose important implementation classes (4268) (by **Yi Xu**)
- [llvm] Add missing pre-processor macro in cpp-tests when LLVM is disabled (4269) (by **PGZXB**)
- Add more camera controls (4212) (by **Yu Zhang**)
- [vulkan] Test & build macOS 10.15 MoltenVK (4259) (by **Bob Cao**)
- [vulkan] Use TI_VISIBLE_DEVICE to select vulkan device (4255) (by **Bo Qiao**)
- [misc] Remove some unnecessary include lines (4265) (by **PGZXB**)
- [lang] Expose mesh_patch_idx at top level (4260) (by **Ailing**)
- [Bug] Only ban passing non contiguous torch tensors to taichi kernels. (4258) (by **Ailing**)
- [ci] Run on pull_request_target to access the secrets (4253) (by **Frost Ming**)
- [misc] Update master version to 0.9.0 (4248) (by **Ailing**)
- [misc] Use test_utils.approx directly (4252) (by **Ailing**)
- [ci] Move _testing.py into tests folder (4247) (by **Ailing**)
- [refactor] Remove get_current_program() and global variable current_program (4246) (by **PGZXB**)
- [Doc] Update sparse compuation doc (4060) (by **Peng Yu**)
- [Error] Raise an error when breaking the outermost loop (4235) (by **Lin Jiang**)
- [ci] Disable Vulkan backend for mac1015 release. (4245) (by **Ailing**)
- [Refactor] Move ti.quant & ti.type_factory under ti.types.quantized_types (4233) (by **Yi Xu**)
- [doc] Major revision to the field (advanced) document (4156) (by **Haidong Lan**)
- [vulkan] Disable buffer device address if int64 is not supported (4244) (by **Bob Cao**)
- [CUDA] Fix random generator routines for f32 and f64 to make sure the returned value is in [0, 1) (4243) (by **Zhao Liang**)
- [ci] Create PR card in projects automatically (4229) (by **Frost Ming**)
- [refactor] Remove dependency on get_current_program() in lang::BinaryOpExpression (4242) (by **PGZXB**)
- [Refactor] Add require_version configuration in ti.init() (4151) (by **ZHANG Zhi**)
- [ci] Disable Vulkan backend for mac1014 release. (4241) (by **Ailing**)
- [refactor] Remove global scope_stack and dependencies on it (4237) (by **PGZXB**)
- [refactor] Remove lang::current_ast_builder() and dependencies on it (4239) (by **PGZXB**)
- [vulkan] Add buffer device address (physical pointers) support & other improvements (4221) (by **Bob Cao**)
- [Refactor] Avoid exposing ti.tape (4234) (by **Bo Qiao**)
- [lang] Annotate constants with dtype without casting. (4224) (by **Ailing**)
- [refactor] Remove legacy ti.benchmark() and ti.benchmark_plot() (4222) (by **Xiangyun Yang**)
- [misc] Add memcpy to micro-benchmarks (4220) (by **Bo Qiao**)
- [Refactor] Merge ti.tools.image.imdisplay() into ti.tools.image.imshow() (4144) (by **Zhao Liang**)
- [Refactor] Rename and move memory profiler info under ti.profiler (4227) (by **Xiangyun Yang**)
- [Bug] Ban passing torch view tensors into taichi kernel (4225) (by **Ailing**)
- [refactor] Remove dependency on get_current_program() in lang::FrontendForStmt (4228) (by **PGZXB**)
- [metal] Give random seeds a unique value (4206) (by **Ye Kuang**)
- [autodiff] Refactor the IB identification and optimize the checker for global atomics and purely nested loops (4154) (by **Mingrui Zhang**)
- [doc] Add the step of setting "TI_WITH_VULKAN" for linux (4209) (by **Neko Null**)
- [doc] Add instruction to install clang-format-10 on M1 Mac (4219) (by **Lin Jiang**)
- [Refactor] Move public APIs of ti.tools outside top level (4218) (by **Yi Xu**)
- [Refactor] Move ti.parallel_sort under _kernels (4217) (by **Yi Xu**)
- [refactor] Remove top level __all__ (4214) (by **Yi Xu**)
- [vulkan] Support Vulkan 1.3 (4211) (by **Bob Cao**)
- [CI] Update release workflow (4215) (by **Jian Zeng**)
- [Refactor] Move ti.taichi_logo to examples (4216) (by **Yi Xu**)
- [vulkan] Fix MoltenVK support (4205) (by **Bob Cao**)
- [Refactor] Rename tools.util to tools.async_utils and hide functions inside (4201) (by **Yi Xu**)
- [spirv] SPIR-V / Vulkan NDArray (4202) (by **Bob Cao**)
- [misc] Export visibility of symbols required for Vulkan AOT execution (4203) (by **Gabriel H**)
- [misc] Test unified doc & api preview. (4186) (by **Ailing**)
- [refactor] Remove dependency on get_current_program() in exported functions of SNode (4192) (by **PGZXB**)
- [refactor] Export some functions which depend on current_ast_builder() as members of ASTBuilder (4131) (by **PGZXB**)
- [Refactor] Do not expose StructField and SourceBuilder to users (4200) (by **Yi Xu**)
- [Error] Add function name to traceback (4195) (by **Lin Jiang**)
- [Refactor] Remove redundant set_gdb_trigger (4198) (by **Yi Xu**)
- [javascript] Avoid using C++ inline asm when TI_EMSCRIPTENED (JS 6/n) (4109) (by **Dunfan Lu**)
- [javascript] Disable stack trace logging when TI_EMSCRIPTENED (JS 9/n) (4117) (by **Dunfan Lu**)
- [javascript] Support TI_EMSCRIPTENED option as an env var (JS 3/n) (4106) (by **Dunfan Lu**)
- [Refactor] Rename and move kernel profiler APIs (4194) (by **Yi Xu**)
- [doc] Update the doc for differentiable programming (4057) (by **Mingrui Zhang**)
- [misc] Add math operators to micro-benchmarks (4122) (by **rocket**)
- [misc] Add atomic operators to micro-benchmarks (4169) (by **rocket**)
- [dx11] Fix parse_reference_count signature (4189) (by **quadpixels**)
- [Doc] update demo code in readme doc (4193) (by **箱子**)
- [bug] [opengl] Process child nodes to compute alignment (4191) (by **Ailing**)
- [refactor] Remove dependency on current_ast_builder() in lang::For and cpp_tests (4185) (by **PGZXB**)
- [refactor] Add TI_DLL_EXPORT to control symbol visibility (4177) (by **Ye Kuang**)
- [refactor] Remove is_signed/is_integral from top level. (4182) (by **Ailing**)
- [refactor] Move version_check out of taichi.lang. (4178) (by **Ailing**)
- [refactor] Remove locale_encode from top level. (4179) (by **Ailing**)
- [refactor] Remove dependency on get_current_program() in lang::Ndarray (4162) (by **PGZXB**)
- [Refactor] Clean up helper functions in tools.util (4174) (by **Yi Xu**)
- [refactor] Remove bit_vectorize from top level. (4158) (by **Ailing**)
- [test] [example] Add a test for taichi_logo example (4170) (by **Isaac**)
- [Refactor] Remove inspect for modules in lang init (4173) (by **Bo Qiao**)
- remove KernelDefError KernelArgError InvalidOperationError (4166) (by **Lin Jiang**)
- [Refactor] Expose runtime/snode ops properly (4167) (by **Yi Xu**)
- [opengl] Use && instead of and in C++ code (4171) (by **Dunfan Lu**)
- [Refactor] Move core_vec(i) to gui and hide (4172) (by **Yi Xu**)
- [ci] Fix concurrent run issue (4168) (by **Frost Ming**)
- [Refactor] Rename and move scoped profiler info under ti.profiler (4165) (by **Yi Xu**)
- [spirv] Move external arrays into seperate buffers (4121) (by **Bob Cao**)
- [doc] Improve Fields documentation (4063) (by **rocket**)
- [refactor] Move functions in __init__ to misc (4150) (by **Xiangyun Yang**)
- [refactor] Remove dependency on get_current_program() and lang::current_ast_builder() in lang::Expr (4103) (by **PGZXB**)
- [refactor] Expose ti.abs and ti.pow (4157) (by **Lin Jiang**)
- [Doc] Update README.md (4139) (by **Ye Kuang**)
- [Refactor] Do not expose TapeImpl to users (4148) (by **Yi Xu**)
- [Refactor] Remove unnecessary exposure related to matrix and mesh (4152) (by **Lin Jiang**)
- [Refactor] Do not expose internal function in field, exception, expr, any_array , _ndrange, _ndarray (4137) (by **Xiangyun Yang**)
- [Refactor] Do not expose taichi.snode (4149) (by **Bo Qiao**)
- [refactor] [ir] Remove load_if_ptr and move pointer dereferencing to frontend-to-IR passes (4104) (by **daylily**)
- [Refactor] Do not expose internal function in ti.lang.impl (4134) (by **Xiangyun Yang**)
- [Refactor] Prevent modules in lang being wild imported and exposed (4140) (by **Bo Qiao**)
- Move __getattr__ back to __init__.py (4142) (by **Lin Jiang**)
- [Refactor] Avoid exposing real and integer types API (4129) (by **Bo Qiao**)
- [Refactor] Do not expose functions in taichi.lang.util to users (4128) (by **Yi Xu**)
- [Refactor] Do not expose main to users (4136) (by **Yi Xu**)
- [doc] Revise doc for GUI system. (4006) (by **Jiasheng Zhang**)
- [refactor] Remove critical/debug/error/trace/warn/info/is_logging_effective from top level (4133) (by **Ailing**)
- [Refactor] Remove supported_log_levels (4120) (by **Bo Qiao**)
- [ci] Fix approx in autodiff example test (4132) (by **Ailing**)
- [bug] Fix starred expression when the value is not a list (4130) (by **Lin Jiang**)
- Support compiling taichi in x86 (4107) (by **Dunfan Lu**)
- [javascript] Avoid all usages of glfw/vulkan/volk when TI_EMSCRIPTENED (JS 5/n) (4108) (by **Dunfan Lu**)
- [javascript] [misc] Remove redundant pybind include in Taichi Core Library (4110) (by **Dunfan Lu**)
- [test] Remove allclose at top level. (by **Ailing Zhang**)
- [test] Remove approx at top level. (by **Ailing Zhang**)
- [test] Remove get_rel_eps() at top level. (by **Ailing Zhang**)
- [test] Replace make_temp_file with tempfile (by **Ailing Zhang**)
- [Refactor] Remove exposure of internal functions in taichi.lang.ops (4101) (by **Lin Jiang**)
- [misc] Fix the changelog generator to only count current branch commits (4126) (by **Frost Ming**)
- [build] Handle empty TAICHI_EMBIND_SOURCE (4127) (by **Ailing**)
- [ci] Use GHA workflow to control the concurrency (4116) (by **Frost Ming**)
- [misc] Version bump: v0.8.11 -> v0.8.12 (4125) (by **Ailing**)
- [refactor] Remove dependency on lang::current_ast_builder() in lang::ConstantFold (4123) (by **PGZXB**)
- [doc] Add doc about difference between taichi and python programs (3996) (by **Lin Jiang**)
- [doc] Update docs about kernels and functions (4044) (by **Lin Jiang**)
- [misc] Add containers and end-to-end result to micro-benchmarks (4081) (by **rocket**)
- [opengl] Use element_size as alignment in root buffer. (4095) (by **Ailing**)
- [javascript] Add TI_EMSCRIPTENED to cmake options (JS 1/n) (4093) (by **Dunfan Lu**)
- [javascript] Add Javascript PR tag (JS 0/n) (4094) (by **Dunfan Lu**)
- [opt] Remove legacy vectorization pass (4096) (4099) (by **daylily**)
- [refactor] [ir] Refactor ExternalFuncCallExpression into a frontend statement (4098) (by **daylily**)
- [spirv] Add names to buffer struct types and pointers (4092) (by **Bob Cao**)
- [test] Add a test for the minimization example (4091) (by **Zydiii**)
- [refactor] Remove dependency on get_current_program() in ui/backends/vulkan (4076) (by **PGZXB**)
- [refactor] [ir] Use InternalFuncCall for retrieving thread index (4090) (by **daylily**)
- Add images to GL device API (4084) (by **Bob Cao**)
- [dx11] Add underlying DX11 device, memory allocation, and some tests (3971) (by **quadpixels**)
- [Bug] [lang] Ban redefinition of template and matrix arguments in Taichi kernel (4080) (by **Lin Jiang**)
- [bug] Fix warnings on external functions on windows (4079) (by **Lin Jiang**)
- [aot] [vulkan] Provide range_hint for range_for offloaded tasks in vulkan backend. (by **Ailing Zhang**)
- [refactor] Reuse SNode tree id (4056) (by **Lin Jiang**)
- [bug] Fix ndrange with star arguments (4077) (by **Lin Jiang**)
- [aot] [opengl] Provide range_hint for range_for offloaded tasks in (by **Ailing Zhang**)
- [misc] Add a minimal example for micro-benchmarks (4031) (by **rocket**)
- [doc] Refactor type system doc: primitive types (4055) (by **Yi Xu**)
- [misc] Migrate benchmarks to a new version (4059) (by **rocket**)
- [refactor] Re-export some functions called directly by ASTTransfomer.* as member of ASTBuilder (4034) (by **PGZXB**)
- [autodiff] Fix the local allocas defining in inner loop raising runtime error (4041) (by **Mingrui Zhang**)
- [opengl] Make sure ndarray arg bind indices are sorted. (4069) (by **Ailing**)
- [doc] Improve operator page (4067) (by **Bo Qiao**)
- [ir] [refactor] Make ReturnStmt support a vector of stmts (4028) (by **Xiangyun Yang**)
- [Lang] [bug] Stop misusing non-template argument types to determine template reinstantiation (4049) (by **Xiangyun Yang**)
- [misc] Version bump: v0.8.10 -> v0.8.11 (4053) (by **rocket**)

0.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:
- [bug] Fix warnings on external functions on windows (4079) (by **Lin Jiang**)
- [misc] Version bump: v0.8.10 -> v0.8.11 (4053) (by **rocket**)
- [test] [example] Add test and video generator for cornell box. (4045) (by **Ailing**)

0.8.10

Highlights:
- **AOT**
- Add a generic set of AOT structs (3973) (by **Ye Kuang**)
- Switch vulkan aot to use taichi::aot::ModuleData. (by **Ailing Zhang**)
- Convert opengl aot to dump ModuleData. (3991) (by **Ailing**)
- **Language and syntax**
- Use FrontendExprStmt in place of FrontendEvalStmt (3978) (by **daylily**)
- Get global vars by using __globals__ (3949) (by **Lin Jiang**)
- Support static short circuit bool operations (3958) (by **Lin Jiang**)
- Experimental automatic mesh_local (3989) (by **Chang Yu**)
- Support nested mesh-for (3990) (by **Chang Yu**)
- **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**
- Update Docs preview settings. (4021) (by **Chengchen(Rex) Wang**)
- Add doc for compile-time recursion (3994) (by **Lin Jiang**)
- Add an operation page (4004) (by **Bo Qiao**)
- Improve type system documentation (4002) (by **Bo Qiao**)
- **Error messages**
- Add TaichiTypeError (3964) (by **Lin Jiang**)
- Produce a warning when users call external functions (4007) (by **Lin Jiang**)
- Shorten the length of traceback of TaichiCompilationError (3965) (by **Lin Jiang**)
- Raise exception when encountering undefined name (3951) (by **Lin Jiang**)
- **Bug fixes**
- Fix bug that building with TI_WITH_LLVM=OFF will fail (4043) (by **PGZXB**)
- Treat PtrOffsetStmt as random-initialized (3998) (by **Yi Xu**)
- GGUI imwrite BGRA to RGBA conversion (4018) (by **Bob Cao**)


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**)

0.8.9

Highlights:
- **Android**
- Add initial support of Android in GGUI (3845) (by **Gabriel H**)
- **Bug fixes**
- Query device attribute when using cuda 11 and above (3930) (by **Bo Qiao**)
- Fix the ttf path (3931) (by **Xiangyun Yang**)
- **Language and syntax**
- Initial matrix argument support for ti.kernel (3905) (by **Xiangyun Yang**)
- Enable dynamic indexing of matrix field elements when possible (3865) (by **Yi Xu**)
- **Miscellaneous**
- Support logging on Android platforms (3849) (by **Gabriel H**)
- **Refactor**
- Remove all occurrences of print_preprocessed and print_ast (3911) (by **Xiangyun Yang**)
- Deprecate excepthook and completely remove _taichi_skip_traceback (3902) (by **Haidong Lan**)
- **Tests**
- Add initial AOT CPP test (3850) (3899) (by **Gabriel H**)
- Add initial AOT CPP test (3850) (by **Gabriel H**)

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**)

0.8.8

Highlights:
- **Android**
- Add initial support of the platform (3755) (by **Gabriel H**)
- **Bug fixes**
- Fix copying a Matrix/Struct in Taichi scope (3838) (by **Yi Xu**)
- Modify the implementation of norm_sqr() (3803) (by **Yi Xu**)
- **Documentation**
- Tweak API docstrings (3820) (by **Ye Kuang**)
- Refactored contribution guidelines (3789) (by **Vissidarte-Herman**)
- Fix a misspelling (3773) (by **张皓**)
- **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**
- Update AOT Loader support to new API (3766) (by **Gabriel H**)
- Add support of loading AOT modules and fields (3703) (by **Gabriel H**)

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**)

Page 7 of 22

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.