Deprecation Notice
- Support for sparse SNodes on the Metal backend has been removed.
- ti.Matrix.rotation2d() has been removed.
- The packed switch in ti.init() has been removed.
- The dynamic_index switch in ti.init() is now deprecated and will be removed in v1.5.0. See the feature introduction below for details.
- Slicing from a single row/column of a matrix (e.g.a[x, a:b]) now returns a vector instead of a matrix.
New features
AOT
Taichi AOT is officially available in Taichi v1.4.0, along with a native Taichi Runtime (TiRT) library taichi_c_api. Native applications can now load compiled AOT modules and launch Taichi kernels without a Python interpreter.
In this release, TiRT has stabilized the Vulkan backend on desktop platforms and Android. You can find prebuilt TiRT binaries on the release page. You can refer to a comprehensive tutorial on the doc site; the detailed TiRT C-API documentation is available at https://docs.taichi-lang.org/docs/taichi_core.
Ndarray
Taichi ndarray is now formally released in v1.4.0. The ndarray is an array object that holds contiguous multi-dimensional data to allow easy exchange with external libraries. See documentation for more details.
Dynamic index
Before v1.4.0, when you wanted to access a vector/matrix with a runtime variable instead of a compile-time constant, you had to set ti.init(dynamic_index=True). However, that option only works for LLVM-based backends (CPU & CUDA) and may slow down runtime performance because all matrices are affected. Starting from v1.4.0, that option is no longer needed. You can use variable indices whenever necessary on all backends without affecting the performance of those matrices with only constant indices.
Improvements
Performance
- The compilation speed has been optimized by ~2x.
Example list & ti gallery
Since v1.0.0, we have been enriching our taichi example collection, bringing the number of demos in the gallery window from eight to twelve. Run ti gallery to check out some new demos!
Bug fixes
- Incorrect behavior of struct fors on sparse SNodes in certain cases has been fixed. (#7121)
- CUDA will no longer allocate extra device memory when performing
to_numpy()
andfrom_numpy()
. (#7008) - StructType is now allowed as a type hint to ti.func. (#6964)
- Incorrect recompilation caused by filling in a matrix field with the same matrix has been fixed. (#6951)
- Matrix type inference has been fixed. (#6928)
- Getting 64-bit data from ndarrays in the Python scope is now handled correctly. (#6836)
- Name collision problem in ti.dataclass has been fixed. (#6737)
Highlights:
- Aot module
- Deprecate element shape and field dim for AOT symbolic args (#7100) (by Haidong Lan)
- Bug fixes
- Build system
- Deprecate export_core (#7028) (by Zhanlue Yang)
- Command line interface
- Add "ti cache clean" command to clean the offline cache files manually (#6937) (by PGZXB)
- Documentation
- Update tutorial.md (#7176) (by Zhao Liang)
- Update math_module.md (#7175) (by Zhao Liang)
- Update debugging.md (#7173) (by Zhao Liang)
- Fix C++ tutorial does not display on doc site (#7174) (by Zhao Liang)
- Update doc regarding dynamic index (#7148) (by Yi Xu)
- Move glossary to top level (#7118) (by Zhao Liang)
- Update type.md (#7038) (by Zhao Liang)
- Fix docstring (#7065) (by Zhao Liang)
- Remove packed mode in doc (#7030) (by Zhao Liang)
- Minor doc update (#6952) (by Zhao Liang)
- Glossary (#6101) (by Olinaaaloompa)
- Update dac (#6875) (by Gabriel Vainer)
- Update faq.md (#6921) (by Zhao Liang)
- Update dataclass.md (#6876) (by Gabriel Vainer)
- Update the documentation about Dynamic SNode (#6752) (by Lin Jiang)
- Stop mentioning packed mode (#6755) (by Yi Xu)
- Error messages
- GUI
- Support colored texts (#7036) (by Dunfan Lu)
- Intermediate representation
- Allow a maximum of 12 SNode indices (#6901) (by Dunfan Lu)
- Language and syntax
- Raise errors when using the packed switch (#7125) (by Yi Xu)
- Fix cannot use taichi in REPL (#7114) (by Zhao Liang)
- Remove deprecated ti.Matrix.rotation2d() (#7098) (by Yi Xu)
- Remove filename kwarg in aot Module save() (#7085) (by Ailing)
- Remove sourceinspect deprecation warning message (#7081) (by Zhao Liang)
- Make slicing a single row/column of a matrix return a vector (#7068) (by Yi Xu)
- Deprecate the dynamic_index switch (#7071) (by Yi Xu)
- Add irpass::eliminate_immutable_local_vars() test cases for TensorType (#7043) (by Zhanlue Yang)
- Fix gui docstring (#7003) (by Zhao Liang)
- Support dynamic indexing in spirv (#6990) (by Yi Xu)
- Support dynamic indexing in metal (#6985) (by Yi Xu)
- Support LU sparse solver on CUDA backend (#6967) (by pengyu)
- Fix struct type problem (#6949) (by Zhao Liang)
- Add warning message when converting dynamic snode to numpy (#6853) (by Zhao Liang)
- Deprecate sourceinspect dependency (#6894) (by Zhao Liang)
- Warn users if ndarray size is out of int32 boundary (#6846) (by Yi Xu)
- Remove the real_matrix switch (#6885) (by Yi Xu)
- Enable real_matrix and real_matrix_scalarize by default (#6801) (by Zhanlue Yang)
- Raise an error for the semantic change of transpose() (#6813) (by Yi Xu)
- Add bool type in python as an alias to i32 (#6742) (by daylily)
- Add deprecation warning for the removal of the packed switch (#6753) (by Yi Xu)
- Metal backend
- Raise deprecate warning and error when using sparse snodes on metal (#6739) (by Lin Jiang)
- Miscellaneous
Full changelog:
- [Doc] Update tutorial.md (#7176) (by Zhao Liang)
- [aot] (cherry-pick) Removed unused archs in C-API (#7167), FindTaichi CMake module to help outside project integration (#7168) (#7177) (by PENGUINLIONG)
- [docs] Create windows_debug.md (#7164) (by Bob Cao)
- [Doc] Update math_module.md (#7175) (by Zhao Liang)
- [Doc] Update debugging.md (#7173) (by Zhao Liang)
- [Doc] Fix C++ tutorial does not display on doc site (#7174) (by Zhao Liang)
- [doc] Fix spelling of "paticle_field" (#7024) (by Xiang (Kevin) Li)
- [doc] Update accelerate_python.md to use ti.max (#7161) (by Tao Jin)
- [aot] Fixed ti_get_last_error signature (#7165) (by PENGUINLIONG)
- [example] Update quaternion arithmetics in fractal_3d_ggui (#7139) (by Zhao Liang)
- [doc] Add doc ndarray (#7157) (by Olinaaaloompa)
- [doc] Update field.md (Fields advanced) (#6867) (by Gabriel Vainer)
- [ci] Use make_changelog.py to generate the full changelog (#7152) (by Lin Jiang)
- [aot] Introduce new AOT deployment tutorial (#7144) (by PENGUINLIONG)
- [Doc] Update doc regarding dynamic index (#7148) (by Yi Xu)
- [Misc] Strictly check ndim with external array (#7126) (by Haidong Lan)
- [ci] Run test when pushing to rc branches (#7146) (by Lin Jiang)
- [ci] Disable backward_cpp on macOS (#7145) (by Proton)
- [gui] Fix scene line renderable (#7131) (by Bob Cao)
- [Lang] Raise errors when using the packed switch (#7125) (by Yi Xu)
- [cpu] Reuse VirtualMemoryAllocator for CPU ndarray memory allocation (#7128) (by Ailing)
- [ci] Temporarily disable ad_external_array on Metal (#7136) (by Bob Cao)
- [Error] Raise errors when using metal sparse (#7113) (by Lin Jiang)
- [misc] Cherry-pick #7072 into rc-v1.4.0 (#7135) (by Ailing)
- [aot] Rename device capability atomic_i64 to atomic_int64 for consistency (#7095) (by PENGUINLIONG)
- [Lang] Fix cannot use taichi in REPL (#7114) (by Zhao Liang)
- [Bug] Fix num_splits in parallel_struct_for (#7121) (by Yi Xu)
- [Doc] Move glossary to top level (#7118) (by Zhao Liang)
- [Aot] Deprecate element shape and field dim for AOT symbolic args (#7100) (by Haidong Lan)
- [Lang] Remove deprecated ti.Matrix.rotation2d() (#7098) (by Yi Xu)
- [doc] Modified some errors in the function examples (#7094) (by welann)
- [ci] More Windows git hacks (#7102) (by Proton)
- [Lang] Remove filename kwarg in aot Module save() (#7085) (by Ailing)
- [Lang] Remove sourceinspect deprecation warning message (#7081) (by Zhao Liang)
- [example] Remove gui warning message (#7090) (by Zhao Liang)
- [Bug] Fix ret_type and cast_type of UnaryOpStmt in Scalarize (#7082) (by Yi Xu)
- [doc] Update ndarray deprecation warning to 1.5.0 (#7083) (by Haidong Lan)
- [example] Update gallery images (#7053) (by Zhao Liang)
- [Doc] Update type.md (#7038) (by Zhao Liang)
- [Doc] Fix docstring (#7065) (by Zhao Liang)
- [Lang] Make slicing a single row/column of a matrix return a vector (#7068) (by Yi Xu)
- [ci] Workaround windows checkout 'Needed a single revision' issue (#7078) (by Proton)
- [lang] Make sure ndarrays created in python frontend are initialized as zero (#7060) (by Ailing)
- [Lang] Deprecate the dynamic_index switch (#7071) (by Yi Xu)
- [misc] Update python package metadata (#7063) (by Proton)
- [bug] Fixed compilation error caused by #7047 (#7069) (by PGZXB)
- [opt] Automatically identify allocas to scalarize (#7055) (by Yi Xu)
- [refactor] Remove ir parameter of KernelCodeGen::KernelCodeGen(Kernel *kernel, IRNode *ir) (#7046) (by PGZXB)
- [refactor] Remove unnecessary IRNode::kernel (#7047) (by PGZXB)
- [refactor] Remove dependencies on Program::current_ast_builder() in C++ side (#7044) (by PGZXB)
- [ci] Version sanity check before publishing (#7062) (by Proton)
- [ci] Make changelog generation working again (#7058) (by Proton)
- [rhi] Update CommandList dispatch API (#7052) (by Bob Cao)
- [aot] C-API versioning (#7050) (by PENGUINLIONG)
- [refactor] Remove offloaded parameter of Program::compile() (#7045) (by PGZXB)
- [lang] Migrate TensorType expansion for subscription indices from Python to Frontend IR (#6942) (by Zhanlue Yang)
- [opt] Add ExtractPointers pass for dynamic index (#7051) (by Yi Xu)
- [Lang] Add irpass::eliminate_immutable_local_vars() test cases for TensorType (#7043) (by Zhanlue Yang)
- [Lang] Fix gui docstring (#7003) (by Zhao Liang)
- [rhi] Update compute CommandList APIs (except dispatch) (#7037) (by Bob Cao)
- [ir] Let GetElementExpression&Statement support index list (#7049) (by Lin Jiang)
- [aot] C-API opengl runtime interop (#7042) (by PENGUINLIONG)
- [ci] Pin pre-commit python version to 3.10 (#7041) (by Proton)
- [opengl] Enable more gles tests in CI (#7031) (by Ailing)
- [ci] Tuning headless demo VRAM usage (#7039) (by Proton)
- [Build] Deprecate export_core (#7028) (by Zhanlue Yang)
- [GUI] Support colored texts (#7036) (by Dunfan Lu)
- [aot] Revert "C-API opengl runtime interop (#7014)" (#7032) (by Proton)
- [ci] Update pre-commit app versions (#7025) (by Proton)
- [Doc] Remove packed mode in doc (#7030) (by Zhao Liang)
- Revert "[opengl] Enable more gles tests in CI" (#7029) (by Ailing)
- [build] Remove libexport_core.so dependency for Android App CI (#6997) (by Zhanlue Yang)
- [opengl] Enable more gles tests in CI (#7010) (by Ailing)
- [aot] C-API opengl runtime interop (#7014) (by damnkk)
- [misc] Add macro to control amdgpu-related header file (#7021) (by Zeyu Li)
- [bug] Fix device memory allocation for numpy array on CUDA backend (#7008) (by Zhanlue Yang)
- [ci] Try enabling MSVC and check build times (#6905) (by Bob Cao)
- [gfx] Update Device API: Splitting ResourceBinder into seperate Shade… (#7020) (by Proton)
- [gfx] Revert "Update Device API: Splitting ResourceBinder into sepera… (#7019) (by Proton)
- [amdgpu] Update amdgpu device to new API (#7018) (by Bob Cao)
- [perf] Fix fill ndarray size problem. (#6992) (by Haidong Lan)
- [cuda] Fix LLVM15 rsqrt perf regression (#7012) (by Haidong Lan)
- [gfx] Update Device API: Splitting ResourceBinder into seperate ShaderResourceSet & RasterResources (#6954) (by Bob Cao)
- [opt] Add ImmediateIRModifier to provide amortized constant-time replace_usages_with() (#7001) (by Yi Xu)
- [amdgpu] Part0 add render hardware interface (#6464) (by Zeyu Li)
- [Error] Do not show warning when the offline cache path does not exist (#7005) (by PGZXB)
- [Lang] [spirv] Support dynamic indexing in spirv (#6990) (by Yi Xu)
- [misc] Remove unnecessary CompileConfig::lazy_compilation (#7009) (by PGZXB)
- [ci] Add C++ tests on AMDGPU RHI (#6597) (by Zeyu Li)
- [ci] Update taichi-release-tests branch (disable QuanTaichi GOL) (#7011) (by Proton)
- [amdgpu] Part3 update runtime module (#6486) (by Zeyu Li)
- [opengl] Fix tests running both on opengl and vulkan (#7006) (by Ailing)
- [ir] Record the return types to a StructType (#6995) (by Lin Jiang)
- [lang] Get the CHI-IR struct type in python (#6994) (by Lin Jiang)
- [ir] Change type maps to unordered maps and add mutexes (#7000) (by Lin Jiang)
- [ir] Add struct type to CHI-IR (#6982) (by Lin Jiang)
- [misc] Add repography activity stats (#6991) (by Proton)
- [aot] Enable validation layers for C-API tests (#6893) (by Zhanlue Yang)
- [opengl] Add ti.gles arch and enable tests (#6988) (by Ailing)
- [Lang] [metal] Support dynamic indexing in metal (#6985) (by Yi Xu)
- [opengl] Reset opengl context when taichi program resets (#6987) (by Ailing)
- [Lang] Support LU sparse solver on CUDA backend (#6967) (by pengyu)
- [misc] Keeping up with new python-wheel implementation (#6986) (by Proton)
- [aot] Recover AOT CI script (#6970) (by PENGUINLIONG)
- [lang] Migrate TensorType expansion for svd from Python code to Frontend IR (#6972) (by Zhanlue Yang)
- [misc] Adding XCode project support (#6976) (by Bob Cao)
- [bug] Fix taichi_ngp starting from ti example (#6973) (by Ailing)
- [ci] Revert "Fix missing c_api.so in linux nightly" (#6974) (by Ailing)
- [ci] Build: auto install vulkan on Linux (#6969) (by Proton)
- [ci] Auto setup miniforge3 env when build (#6966) (by Proton)
- [Lang] Fix struct type problem (#6949) (by Zhao Liang)
- [aot] C-API breaking changes! (#6955) (by PENGUINLIONG)
- [lang] Fix scalarization for PrintStmt (#6945) (by Zhanlue Yang)
- [bug] Allow StructType as type hint to ti.func (#6964) (by Yi Xu)
- [refactor] Remove legacy code for dynamic index (#6961) (by Yi Xu)
- [aot] Fix rwtexture with template_args (#6960) (by Ailing)
- [ci] Fix missing c_api.so in linux nightly (#6962) (by Ailing)
- [lang] Migrate TensorType expansion for SNode indices from Python to Frontend IR (#6934) (by Zhanlue Yang)
- [doc] New FAQ added (#6963) (by Olinaaaloompa)
- [ci] Sync CI cache script & workflow (#6959) (by Proton)
- [ci] Update release test branch, reduce running time (#6944) (by Proton)
- [ci] Remove redundant tests (#6947) (by Proton)
- [bug] Fix recompilation of filling a matrix field with the same matrix (#6951) (by Yi Xu)
- [aot] Fixed C-API behavior tests (#6939) (by PENGUINLIONG)
- [refactor] Remove _PyScopeMatrixImpl (#6943) (by Yi Xu)
- [aot] Fix validation warning: OpImageFetch should operate on OpImage instead of OpSampledImage (#6925) (by Zhanlue Yang)
- [CLI] Add "ti cache clean" command to clean the offline cache files manually (#6937) (by PGZXB)
- [Doc] Minor doc update (#6952) (by Zhao Liang)
- [ci] Fix forgotten build script paths (#6941) (by Proton)
- [opt] Add pass eliminate_immutable_local_vars (#6926) (by Yi Xu)
- [ci] Fix pre-commit errors (#6940) (by Proton)
- [doc] Editorial updates (#6935) (by Olinaaaloompa)
- [ci] Workflow Rewrite: Building on Linux (#6848) (by Proton)
- [refactor] Remove _IntermediateMatrix and _MatrixFieldElement (#6932) (by Yi Xu)
- [aot] C_API behavior test (#6904) (by damnkk)
- [lang] Fix matrix type inference and remove _MatrixEntriesInitializer (#6928) (by Yi Xu)
- [lang] Reorder sparse matrix before solving (#6886) (by pengyu)
- [Doc] Glossary (#6101) (by Olinaaaloompa)
- [aot] Refactor C-API error tests (#6890) (by Zhanlue Yang)
- [doc] Update layout.md (Fields) (#6868) (by Gabriel Vainer)
- [Doc] Update dac (#6875) (by Gabriel Vainer)
- [lang] Support 'len' with Matrix-typed operands (#6923) (by Zhanlue Yang)
- [doc] Update sparse.md (#6908) (by Gabriel Vainer)
- [doc] Update performance.md (#6911) (by Gabriel Vainer)
- [doc] Update debugging.md (#6909) (by Gabriel Vainer)
- [doc] Update profiler.md (#6910) (by Gabriel Vainer)
- [bug] Add GetElementExpression to offline cache key (#6918) (by PGZXB)
- [ci] Reenable AMDGPU CI, disable OpenGL tests in AMDGPU task (#6887) (by Proton)
- [lang] Fix accidental changes during matrix refactor (#6914) (by Yi Xu)
- [example] Add circle-packing example (#6870) (by Zhao Liang)
- [Doc] Update faq.md (#6921) (by Zhao Liang)
- [misc] Show suggestion when locking metadata.lock fails (#6919) (by PGZXB)
- [doc] New FAQs (#6055) (by Olinaaaloompa)
- [example] Add poission disk sampling example (#6852) (by Zhao Liang)
- [vulkan] Improve Vulkan RHI impl with lower overhead internal implementations (#6912) (by Bob Cao)
- [doc] Link to LLVM 15 built for Visual Studio 2022 (#6916) (by PENGUINLIONG)
- [lang] Fix issue of IfExpr with TensorTyped operands (#6897) (by Zhanlue Yang)
- [doc] Update hello_world.md (#6889) (by Gabriel Vainer)
- [IR] Allow a maximum of 12 SNode indices (#6901) (by Dunfan Lu)
- [doc] Update odop.md (#6874) (by Gabriel Vainer)
- [doc] Update external.md (#6869) (by Gabriel Vainer)
- [Doc] Update dataclass.md (#6876) (by Gabriel Vainer)
- [doc] Update cloth_simulation.md (#6898) (by Vissidarte-Herman)
- [example] Update marching squares example (#6851) (by Zhao Liang)
- [Lang] Add warning message when converting dynamic snode to numpy (#6853) (by Zhao Liang)
- [Lang] Deprecate sourceinspect dependency (#6894) (by Zhao Liang)
- [aot] Added C-API behavior tests (#6871) (by damnkk)
- [aot] Gather satellite repo URLs (#6860) (by PENGUINLIONG)
- [refactor] Remove _TiScopeMatrixImpl (#6892) (by Yi Xu)
- [ci] Python test minor fixes (#6891) (by Proton)
- [ir] Add ir_traits namespace to use less dynamic casts & Run CFG only ever once (#6812) (by Bob Cao)
- [Lang] Warn users if ndarray size is out of int32 boundary (#6846) (by Yi Xu)
- [build] Enable strip for libtaichi_c_api.so with Release Build (#6845) (by Zhanlue Yang)
- [Lang] Remove the real_matrix switch (#6885) (by Yi Xu)
- [build] Turn on function level linking for taichi_c_api (#6840) (by Zhanlue Yang)
- [test] Remove tests with real_matrix=True and real_matrix_scalarize=True (#6873) (by Yi Xu)
- [misc] Revert back to master after #6843 merged (#6883) (by Bob Cao)
- [vulkan] Cleanup spdlog related logging from Vulkan RHI (#6843) (by Bob Cao)
- [ci] Temporarily disable AMDGPU CI (#6872) (by Proton)
- [Lang] Enable real_matrix and real_matrix_scalarize by default (#6801) (by Zhanlue Yang)
- [bug] MatrixType bug fix: Fix error with static-grouped-ndrange (#6839) (by Zhanlue Yang)
- [example] Fix jacobian example (#6849) (by Mingrui Zhang)
- [bug] Fix flaky mass_spring_game_ggui.py on Mac M1 by setting up default values for VulkanCapabilities (#6850) (by Zhanlue Yang)
- [example] Solve implicit fem using sparsee solver (#6827) (by pengyu)
- [build] Migrate cmake targets from OBJECT to STATIC for libtaichi_c_api.so (#6831) (by Zhanlue Yang)
- [Bug] Fix getting 64-bit data from ndarray in Python scope (#6836) (by Yi Xu)
- [test] Avoid constant folding in overflow tests (#6835) (by Ailing)
- [aot] Added C-API behavior test (#6837) (by damnkk)
- [bug] Matrix refactor bug fix: Fix cross scope matrix operations (#6822) (by Zhanlue Yang)
- [build] Refactored and removed RuntimeCUDA and RuntimeCUDAInjector (#6830) (by Zhanlue Yang)
- [bug] Matrix refactor bug fix: Fix logical binary operations with TensorTyped operands (#6817) (by Zhanlue Yang)
- [example] Add order-independent transparency example (#6829) (by Lin Jiang)
- [opt] Re-enable constant folding when debug=True (#6824) (by Ailing)
- [Bug] Avoid overwriting global tmp with dynamic_index=True (#6820) (by Yi Xu)
- [bug] Matrix refactor bug fix: Fix restrictions on BinaryOp/TernaryOp operands' broadcasting (#6805) (by Zhanlue Yang)
- [aot] C-API Device capability improvements (#6773) (by PENGUINLIONG)
- [misc] Headers dependency cleanup from RHI (#6699) (by Bob Cao)
- [ci] Revert "Temporarily disable desktop headless tests (#6811)" (#6816) (by Proton)
- [misc] Bump version to v1.4.0 (#6804) (by PENGUINLIONG)
- [ci] Add AMDGPU relected ci (#6743) (by Zeyu Li)
- [test] Remove unnecessary duplicated python runtime test runs (#6808) (by Ailing)
- [Lang] Raise an error for the semantic change of transpose() (#6813) (by Yi Xu)
- [refactor] Remove unnecessary checks in program (#6802) (by Ailing)
- [vulkan] Support texture type args in aot add_kernel (#6796) (by Ailing)
- [ci] Temporarily disable desktop headless tests (#6811) (by Proton)
- [bug] Fix name collision in ti.dataclass (#6737) (by Yi Xu)
- [bug] MatrixType bug fix: Add additional restrictions for unpacking a Matrix (#6795) (by Zhanlue Yang)
- [doc] Update docstring for grad replaced (#6800) (by Mingrui Zhang)
- [build] Add MSBuild option to setup.py (#6724) (by Bob Cao)
- [Lang] [type] Add bool type in python as an alias to i32 (#6742) (by daylily)
- [lang] Use less gpu memory when building sparse matrix (#6781) (by pengyu)
- [example] Add cuda options for sparse matrix examples (#6785) (by pengyu)
- [misc] Remove usage of deprecated num_channels/channel_format type hint in rw_texture in codebase (#6791) (by Ailing)
- [bug] MatrixType bug fix: Fix error with BLS (#6664) (by Zhanlue Yang)
- [vulkan] Support rw_texture in aot add_kernel (#6789) (by Ailing)
- [bug] MatrixType bug fix: Fix error with quant (#6776) (by Yi Xu)
- [bug] MatrixType bug fix: Fix test_ad_gdar_diffmpm (#6786) (by Yi Xu)
- [vulkan] Deprecate num_channels and channel_format args in rw_texture type annotation (#6782) (by Ailing)
- [misc] Remove the default potential_bug label on bug report issues (#6784) (by Ailing)
- [bug] MatrixType bug fix: Fix error with texture (#6775) (by Yi Xu)
- [vulkan] Make sure kernel recompiles when texture dtype changes (#6774) (by Ailing)
- [aot] Clean up exported symbols for libtaichi_c_api.so (#6140) (by Zhanlue Yang)
- [Misc] Refactored flattend_values() to avoid potential conflicts in flattened statements (#6749) (by Zhanlue Yang)
- [aot] Warn the user about out-of-range access in C++ wrapper (#6492) (by PENGUINLIONG)
- [build] Initial distributed compiling support (#6762) (by Proton)
- [aot] Revert C-API Device capability improvements (#6772) (by PENGUINLIONG)
- [aot] C-API Device capability improvements (#6702) (by PENGUINLIONG)
- [aot] C-API to get available archs (#6766) (by PENGUINLIONG)
- [doc] Update sparse matrix document (#6719) (by pengyu)
- [autodiff] Separate non-linear operators to an individual class (#6700) (by Mingrui Zhang)
- [bug] Fix dereferencing nullptr (#6763) (by Yi Xu)
- [Doc] Update the documentation about Dynamic SNode (#6752) (by Lin Jiang)
- [doc] Update dev install about clang version (#6759) (by Ailing)
- [build] Improve TI_WITH_CUDA guards for CUDA related test cases (#6698) (by Zhanlue Yang)
- [Lang] Add deprecation warning for the removal of the packed switch (#6753) (by Yi Xu)
- [lang] Improve sparse matrix building on GPU (#6748) (by pengyu)
- [aot] JSON serde (#6754) (by PENGUINLIONG)
- [bug] MatrixType bug fix: Fix error with to_numpy() and from_numpy() (#6726) (by Zhanlue Yang)
- [Doc] Stop mentioning packed mode (#6755) (by Yi Xu)
- [lang] Get the length of dynamic SNode by x.length() (#6750) (by Lin Jiang)
- [llvm] Support nested struct with matrix return value on real function (#6734) (by Lin Jiang)
- [Metal] [error] Raise deprecate warning and error when using sparse snodes on metal (#6739) (by Lin Jiang)
- [build] Integrate backward_cpp to test targets for enabling C++ stack trace (#6697) (by Zhanlue Yang)
- [aot] Load AOT module from memory (#6692) (#6714) (by PENGUINLIONG)
- [ci] Add dockerfile.ubuntu-18.04.amdgpu (#6736) (by Zeyu Li)
- [doc] Update LLVM10 -> LLVM15 in installation guide (#6747) (by Zhanlue Yang)
- [misc] Fix warnings of taichi examples (#6740) (by PGZXB)
- [example] Ti-example: instant ngp renderer (#6673) (by Youtian Lin)
- [build] Use a separate prebuilt llvm15 binary for manylinux environment (#6732) (by Ailing)