Highlights:
- **Bug fixes**
- Fix random side-effect causing SSA violation in ti.Vector (1631) (by **彭于斌**)
- **Documentation**
- Replace fields of xxx by xxx field (1599) (by **Xudong Feng**)
- Replace "tensor" by "field" in documentation (1633) (by **Xudong Feng**)
- Improve type.rst readability (1618) (by **彭于斌**)
- **Examples**
- Add cg_possion.py, a Poisson solver based on conjugate gradients (1595) (by **彭于斌**)
- Enhance stable_fluid.py with BFECC, RK2, RK3 and Taichi's new syntax (1617) (by **彭于斌**)
- **GUI**
- Support gui.fps_limit and reduce idle power consumption (1611) (by **彭于斌**)
- Support images with 2 channels (RG) in GUI.set_image (1624) (by **彭于斌**)
- Support gui.arrow() and gui.arrows() (1625) (by **彭于斌**)
- **Language and syntax**
- Support float and int as aliases for default-precision data types (1585) (by **彭于斌**)
- **Miscellaneous**
- Catch RuntimeError when detecting backends for better compatibility (1647) (by **彭于斌**)
- **IR optimization passes**
- Improve aliasing analysis for SNodes with trailing bits (1657) (by **xumingkuan**)
- Improve the binary ops simplify pass (1646) (by **xumingkuan**)
- **Refactor**
- "x.snode()" is deprecated, use "x.snode" instead (1654) (by **彭于斌**)
Full changelog:
- [bug] [sparse] Fix struct-fors on pointer SNodes (1662) (by **Yuanming Hu**)
- [misc] [linux] Further improve misc/linker.map to prevent Blender segementation fault (1661) (by **彭于斌**)
- [doc] Re-update documentation on autodiff (1623) (by **彭于斌**)
- [Opt] Improve aliasing analysis for SNodes with trailing bits (1657) (by **xumingkuan**)
- `bgcolor` -> `background_color` in GUI docs (1660) (by **samuela**)
- [Misc] [bug] Catch RuntimeError when detecting backends for better compatibility (1647) (by **彭于斌**)
- [workflow] Add Mac OS X to Github CI (1649) (by **彭于斌**)
- [Example] Add cg_possion.py, a Poisson solver based on conjugate gradients (1595) (by **彭于斌**)
- [Refactor] "x.snode()" is deprecated, use "x.snode" instead (1654) (by **彭于斌**)
- [GUI] Support gui.fps_limit and reduce idle power consumption (1611) (by **彭于斌**)
- [GUI] Support images with 2 channels (RG) in GUI.set_image (1624) (by **彭于斌**)
- [Opt] Improve the binary ops simplify pass (1646) (by **xumingkuan**)
- [benchmark] Fix test_test.py benchmark including '<lambda>' in filename (1650) (by **彭于斌**)
- [cc] [workflow] Add C backend to Github CI (1643) (by **彭于斌**)
- [Doc] Replace fields of xxx by xxx field (1599) (by **Xudong Feng**)
- [cc] Compose ActionRecorder outputs into a single C file for Emscripten (1629) (by **彭于斌**)
- [error] Better error messages when using wrong type annotations (1612) (by **彭于斌**)
- [doc] Update instructions for using Stop Motion OBJ with PLY sequences (1638) (by **Justin**)
- [Doc] Replace "tensor" by "field" in documentation (1633) (by **Xudong Feng**)
- [doc] Fix typo in faq.rst (1636) (by **Danni**)
- Fix hyperlink in faq.rst (1637) (by **Danni**)
- [Example] Enhance stable_fluid.py with BFECC, RK2, RK3 and Taichi's new syntax (1617) (by **彭于斌**)
- [GUI] Support gui.arrow() and gui.arrows() (1625) (by **彭于斌**)
- [Lang] Support float and int as aliases for default-precision data types (1585) (by **彭于斌**)
- [Bug] Fix random side-effect causing SSA violation in ti.Vector (1631) (by **彭于斌**)
- [infra] Support GCC as compiler for Taichi developers (experimental) (1598) (by **彭于斌**)
- [Doc] Improve type.rst readability (1618) (by **彭于斌**)
- [gui] [bug] Fix hex_to_rgb (1630) (by **Yuanming Hu**)
- [async] Clone offloaded tasks lazily by maintaining a cached template task (1619) (by **Ye Kuang**)