- Fix `vec_to_euler` that breaks GGUI cameras & handle camera logic better
- Fix for ImGui widget size on HiDPI
4. Deprecation Notice
- We have removed the CC backend because it is rarely used, and it lacks maintenance.
- We are deprecating `ti.experimental.real_func` because it is no longer experimental. Please use `ti.real_func` instead.
5. Full changelog
Highlights:
- **Bug fixes**
- Fix macro error with ti_import_cpu_memory (8401) (by **Zhanlue Yang**)
- Fix argpack nesting issues (by **listerily**)
- Convert matrices to structs in argpack type members, Fixing layout error (by **listerily**)
- Fix error when returning a struct field member when the return … (8271) (by **秋云未云**)
- Fix Erroneous handling of ndarray in real function in CFG (8245) (by **Lin Jiang**)
- Fix issue with passing python-scope Matrix as ti.func argument (8197) (by **Zhanlue Yang**)
- Fix incorrect CFG Graph structure due to missing Block wiith OffloadedStmts on LLVM backend (8113) (by **Zhanlue Yang**)
- Fix type inference error with LowerMatrixPtr pass (8105) (by **Zhanlue Yang**)
- Set initial value for Cuda device allocation (8063) (by **Zhanlue Yang**)
- Fix the insertion position of the access chain (7957) (by **Lin Jiang**)
- Fix wrong datatype size when writing to ndarray from Python scope (by **Ailing Zhang**)
- **CUDA backend**
- Warn driver version if it doesn't support memory pool. (7912) (by **Haidong Lan**)
- **Documentation**
- Fixing typo in impl.py on ti.grouped function documentation (8407) (by **Quentin Warnant**)
- Update doc about kernels and functions (8400) (by **Lin Jiang**)
- Update documentation (8089) (by **Zhao Liang**)
- Update docstring for inverse func (8170) (by **Zhao Liang**)
- Update type.md, add descriptions of the vector (8048) (by **Chenzhan Shang**)
- Fix a bug in faq.md (7992) (by **Zhao Liang**)
- Fix problems in type_system.md (7949) (by **秋云未云**)
- Add doc about struct arguments (7959) (by **Lin Jiang**)
- Fix docstring of mix function (7922) (by **Zhao Liang**)
- Update faq and ggui, and add them to CI (7861) (by **Zhao Liang**)
- Add kernel sync doc (7831) (by **Zhao Liang**)
- **Error messages**
- Warn before calling the external function (8177) (by **Lin Jiang**)
- Add option to print full traceback in Python (8160) (by **Lin Jiang**)
- Let to_primitive_type throw an error if the type is a pointer (by **lin-hitonami**)
- Update deprecation warning of the graph arguments (7965) (by **Lin Jiang**)
- **Language and syntax**
- Add clz instruction (8276) (by **Jett Chen**)
- Move real function out of the experimental module (8399) (by **Lin Jiang**)
- Fix error with loop unique analysis for MatrixPtrStmt (8307) (by **Zhanlue Yang**)
- Pass DebugInfo from Python to C++ for ndarray and field (8286) (by **魔法少女赵志辉**)
- Support TensorType for SharedArray (8258) (by **Zhanlue Yang**)
- Use ErrorEmitter in type check passes (8285) (by **魔法少女赵志辉**)
- Implement struct DebugInfo and ErrorEmitter (8284) (by **魔法少女赵志辉**)
- Add TensorType support for Constant Folding (8250) (by **Zhanlue Yang**)
- Support TensorType for irpass::alg_simp() (8225) (by **Zhanlue Yang**)
- Support vector/matrix ndarray arguments in real function (by **Lin Jiang**)
- Fix error on ndarray type check (by **Lin Jiang**)
- Support real function in data-oriented classes (by **lin-hitonami**)
- Let kernel support return type annotated with 'typing.Tuple' (by **lin-hitonami**)
- Support tuple return value for kernel and real function (by **lin-hitonami**)
- Let static assert be in static scope (8217) (by **Lin Jiang**)
- Avoid scalarization for AOS GlobalPtrStmt (8187) (by **Zhanlue Yang**)
- Support matrix return value for real function (by **lin-hitonami**)
- Support ndarray argument for real function (by **lin-hitonami**)
- Cast the scalar arguments and return values of ti.func if the type hints exist (8193) (by **Lin Jiang**)
- Handle MatrixPtrStmt for uniquely_accessed_pointers() (8165) (by **Zhanlue Yang**)
- Support struct arguments for real function (by **lin-hitonami**)
- Merge irpass::half2_vectorize() with irpass::scalarize() (8102) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after optimize_bit_struct_stores & determine_ad_stack_size (8097) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::demote_operations() (8096) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::lower_access() (8091) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::make_block_local() (8090) (by **Zhanlue Yang**)
- Support TensorType for Dead-Store-Elimination (8065) (by **Zhanlue Yang**)
- Optimize alias checking conditions for store-to-load forwarding (8079) (by **Zhanlue Yang**)
- Support TensorType for Load-Store-Forwarding (8058) (by **Zhanlue Yang**)
- Fix TensorTyped error with irpass::make_thread_local() (8051) (by **Zhanlue Yang**)
- Fix numerical issue with auto_diff() (8025) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::make_mesh_block_local() (8030) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::make_thread_local() (8028) (by **Zhanlue Yang**)
- Support allocate with cuda memory pool and reduce preallocation size accordingly (7929) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::demote_no_access_mesh_fors() (7956) (by **Zhanlue Yang**)
- Fix error with irpass::check_out_of_bound() for TensorTyped ExternalPtrStmt (7997) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::demote_atomics() (7943) (by **Zhanlue Yang**)
- Separate out preallocation logics for runtime objects (7938) (by **Zhanlue Yang**)
- Remove deprecated funcs in __init__.py (7941) (by **Lin Jiang**)
- Remove deprecated sparse_matrix_builder function (7942) (by **Lin Jiang**)
- Remove deprecated compile option ndarray_use_cached_allocator (7937) (by **Zhanlue Yang**)
- Migrate irpass::scalarize() after irpass::detect_read_only() (7939) (by **Zhanlue Yang**)
- Remove deprecated funcs in ti.ui (7940) (by **Lin Jiang**)
- Remove the support for 'is' (7930) (by **Lin Jiang**)
- Migrate irpass::scalarize() after irpass::offload() (7919) (by **Zhanlue Yang**)
- Raise error when the dimension of the ndrange does not equal to the number of the loop variable (7933) (by **Lin Jiang**)
- Remove a.atomic(b) (7925) (by **Lin Jiang**)
- Cancel deprecating native min/max (7928) (by **Lin Jiang**)
- Fix the api doc search problem (7918) (by **Zhao Liang**)
- Move irpass::scalarize() after irpass::auto_diff() (7902) (by **Zhanlue Yang**)
- Fix Ndarray fill with Matrix/Vector typed values (7901) (by **Zhanlue Yang**)
- Add cast to field.fill() interface (7899) (by **Zhanlue Yang**)
- Let nested data classes have methods (7909) (by **Lin Jiang**)
- Let kernel argument support matrix nested in a struct (by **lin-hitonami**)
- Support the functions of dataclass as kernel argument and return value (7865) (by **Lin Jiang**)
- Fix a bug on PosixPath (7860) (by **Zhao Liang**)
- Postpone MatrixType scalarization to irpass::differentiation_validation_check() (7839) (by **Zhanlue Yang**)
- Postpone MatrixType scalarization to irpass::gather_meshfor_relation_types() (7838) (by **Zhanlue Yang**)
- **Miscellaneous**
- Make clang-tidy happy on 'explicit' (7999) (by **秋云未云**)
- **OpenGL backend**
- Fix: runtime caught error cannot be displayed in opengl (7998) (by **秋云未云**)
- **IR optimization passes**
- Make merging casts int(int(x)) less aggressive (7944) (by **Ailing**)
- Fix redundant clone of stmts across offloaded tasks (7927) (by **Ailing**)
- **Refactor**
- Refactor the argument passing logic of rwtexture and remove extra_args (7914) (by **Lin Jiang**)