CHANGES
=======

1.12.0
------

* perf: add fast path for extracting meshes w/o simplification (#35)
* perf: exploit accumulation of bits to avoid last round (#51)

1.11.1
------

* feat: add nogil to several C++ calls
* test: ensure number of iterations is returned
* fix(fqmr): iteration count was returned as void in cython
* feat: add zmesh.load

1.11.0
------

* fix: incorrect obj writing logic
* feat: add constructor for FqmrMesh from MeshObject and clear method
* feat: add fqmr algorithm and fast obj reading (#50)
* refactor: upgrade zi\_lib code to c++20 compatibility
* fix: load was not properly specified as a class method

1.10.0
------

* ci: switch back to virtual aarch64 servers
* ci: don't upgrade pip
* fix: c++ type warnings in ccl.hpp
* fix: cython numpy deprecated api warning
* build: more robust mac build script
* chore: update build system
* chore: drop py39 add py314
* perf: faster obj reading
* feat: add dust and largest\_k to Mesh object
* install: add C++ files to MANIFEST.in
* fix: type mismatch
* fix: remove unused variable
* feat: add face based CCL (#49)
* feat: zmesh.dust, zmesh.largest\_k (#48)
* feat: add vertex based connected components  (#47)
* feat: add from\_trimesh
* feat: add type to load
* feat: add trimesh converter
* fix: remove double wall artifacts during degenerate face detection
* fix: avoid floating point errors by snapping to grid
* refactor: drop unused variable, avoid copies
* ci: update cibuildwheel and add a real aarch64 machine
* build: add mac build script

1.9.0
-----

* fix: remove unused variable
* fix: ensure chunk zone is assigned as minimum
* feat: add segid getter and setter for CV Mesh compatibility
* fix: exclude empty meshes from chunked results
* fix: accomodate meshobj
* feat: add save and load functions to meshes
* refactor: move "compute\_normals" to a top-level function
* fix: make normal calculation actually work
* redesign: drop \_\_version\_\_
* refactor: make hat operator const
* refactor: rename to compute\_vertex\_normals\_from\_faces
* docs: state why I don't bother calculating the average
* fix: normal calculation didn't seem to work right
* feat: add types to Mesh object
* feat: allow empty mesh init
* refactor: switch is\_empty -> empty for compatibility with cv.Mesh
* feat(chunk\_mesh): support alternative grid origins
* feat: chunk\_mesh (#44)
* chore: remove duplicate py310 and upgrade status from Beta to Production
* ci: add aarch64
* fix: set a min macos version
* chore: update license metadata and supported versions
* ci: update upload-artifact
* perf: another improvement in meshing speed
* perf: small increase in marching cubes speed
* refactor: simpler optimized network sort (#46)
* perf: use better set implementation and remove debug code
* test: make comparison test more precise
* refactor: move cMesher.hpp and modify robinhood to use modern call (#43)

1.8.0
-----

* ci: skip macos, aarch64
* ci: updated to artifactv3
* fixtest: remove macos (will build locally)
* fixtest: putting down test failure to different compilers/libraries
* feat: expose min error (#40)
* fixtest: allow tiny differences in floating point
* feat: add vtk mesh display to zmesh meshes
* ci: add deps for py312
* ci: update test set
* install: add pyproject.toml

1.7.2
-----

* ci: rebuild for numpy 2.0
* feat: support more types of obj files

1.7.1
-----

* fix: some setup issues for py312
* build: update cibuildwheel
* fix: re-simplification works
* fix(simplify): double multiplication by resolution
* fix: avoid numpy import error
* docs: removed sentence about design flaw

1.7.0
-----

* release(1.7.0): deprecates get\_mesh in favor of get
* fix: transpose of mesh image (#38)

1.6.2
-----

* release(1.6.2): obj import accepts scientific notation
* feat: allow from\_obj to parse scientific notation (e.g. 1e-5)
* test: check broken fanc example to prevent regressions
* build: update cibuildwheel
* docs: update installation instructions

1.6.1
-----

* release(1.6.1): fixes bug in marching cubes
* docs: remove old comment
* test: check C and F meshes same
* fix(marching\_cubes): incorrect strides when array is C order
* update build system for py311

1.6.0
-----

* release(1.6.0): removed dependency on BOOST
* refactor/install: remove Boost as dependency (#37)

1.5.0
-----

* release(1.5.0): major performance enhancement to MC and simplify
* fix: remove other unnecessary always inline
* fix: remove always\_inline as it doesn't seem necessary for perf
* build: bump windows to c++17
* test: only check simplified meshes on macos
* perf+refactor: faster and cleaner marching cubes implementation
* test: remove F order simplify test
* test: add simplification test
* refactor: switch \_faces back to unordered\_map
* install: move macro declaration in front of cpp files
* perf: use robin\_hood flat hash map to improve simplification (#33)
* perf: remove seemingly unnecessary check (#32)
* docs: how much does simplification save?
* feat(Mesh): add nbytes property
* feat: add simplification benchmark
* docs: discuss why data.T

1.4.2
-----

* fix: simplification works on larger meshes (#31)

1.4.1
-----

* release(1.4.1): misspelled variable name
* fix: misspelled variable
* redesign: shrink unordered\_map when clearing data
* build: fix incorrect tox parameter

1.4.0
-----

* release(1.4.0): both C and F order are fast in marching cubes
* perf: marching cubes works at full speed on both C and F order arrays (#29)
* refactor: rename and remove some variables
* refactor: std::size\_t -> size\_t
* fix: silence additional annoying warnings
* fix: silence several annoying compile time warnings
* refactor: remove vert loops (#28)

1.3.0
-----

* release(1.3.0): even faster marching cubes
* docs: update perf numbers in comment
* test: add scikit image in very rough comparison to zmesh
* perf: much faster marching cubes (#27)
* chore: also exclude test image data from source dist
* chore: add MANIFEST.in to exclude test files

1.2.0
-----

* release(1.2.0): Faster marching cubes
* perf: faster marching cubes (#26)

1.1.0
-----

* release(1.1.0): small performance improvements
* perf: skip simplifier prep if not simplifying
* perf(int\_mesh::fill\_simplifier): reserve unordered\_map capacity
* test: add performance benchmark and some data
* docs: update performance turning guidance

1.0.0
-----

* release(1.0.0): memory improvements, closed param, voxel\_centered param
* build: update zmesh build to support py310
* feat: add option for closed meshes on the dataset boundaries (#24)
* perf: don't make extra copies of the input data unnecessarily (#23)
* feat: 0.5 voxel offset voxel\_centered parameter (#22)

0.5.1
-----

* chore: remove pypy from build
* chore: replace hyphens with underscores in setup.cfg
* docs: update capabilities of 32-bit mode
* fix: 32-bit mode supports full x range to 1023 voxels
* chore: fix tests and change badge to GHA from travis
* chore: add tests to GHA

0.5.0
-----

* release(0.5.0): support for floating point resolutions
* chore: only build py36+
* chore: try cibuildwheel with github actions
* chore: update metadata to reflect py36+ support
* fix: py39 requires new cython compilation
* Fix comma→dot in readme documentation (#17)
* fix: remove int restrictions from voxel\_resolution
* docs: add references for mesh simplification
* docs: update ChangeLog
* docs: add compute\_normals example

0.4.0
-----

* release(0.4.0): add simplify method
* docs: add simplify example
* feat: breaking simplification routine out from get\_mesh (#8)
* docs: update credits
* release: 0.3.0
* add support to read binary ply file (#10)
* release: 0.3.0
* chore: set description type to markdown
* Update README.md
* feat: obj decoder (#7)
* Update README.md
* docs: added travis badge
* release: 0.2.0
* docs: added mesh format shifting functions to examples
* test: add pytest to travis
* test: add boost to testing dependencies
* test: add .travis.yml
* feat: add simple manual cube generation test for obj and ply
* refactor: simplified ply generation code
* fix: fixed issues in obj and ply formats
* feat: add to\_obj and to\_ply functions
* refactor: make modifying Mesh class easier
* fix: bump max\_simplification\_error default to 40 from 8
* feat: add Precomputed format conversion operators
* perf: make sure division doesn't create rvalue array
* feat: return Mesh object
* Update README.md
* docs: added binary installation method

0.1.0
-----

* release: version 0.1.0
* test: added extremely basic test
* fix: prevent C++11 in CentOS docker from freaking out
* docs: add Related Projects section
* docs: PyPI badge
* docs: added Boost to docs
* fix: zmesh needs boost in the Docker
* fix: accept non-numpy arrays for anisotropy
* chore: add manylinux Dockerfile
* nova: initial commit
* Initial commit
