This update contains breaking changes
new:
- add a
shell.nix
file to handle render libs by @imrn99 in #219
refactor:
- update issue & PR templates by @imrn99 & @dssgabriel in #229
- simplify and improve documentation consistency by @imrn99 in #263
deps:
- revert some upgrades that broke the render menu by @imrn99 in #206
- update thiserror requirement from 1.0.64 to 2.0.3 by @dependabot in #221
- bump codecov/codecov-action from 4.6.0 to 5.0.7 by @dependabot in #242
- chore(deps): bump codecov/codecov-action from 5.0.7 to 5.1.2 by @dependabot in #258
- chore(deps): update itertools requirement from 0.13.0 to 0.14.0 by @dependabot in #262
core definitions and tools for combinatorial map implementation
new:
- add 3D geometry primitives by @imrn99 in #181
- add struct wrappers around inner storages by @imrn99 in #208
refactor:
- change impls of the
fetch_<CELLS>
methods by @imrn99 in #204 - improve grid building routines by @imrn99 in #209
- change underlying implementation of
CMap2
to add sync mechanisms by @imrn99 in #201 - turn internal
CMap2
items into structs by @imrn99 in #223 - rework
sew
methods to allow for more control by @imrn99 in #224 - update
AttributeUpdate
methods returns by @imrn99 in #237 - rework attribute semantics by @imrn99 in #226
- rewrite grid building routines by @imrn99 in #241
- add new variants to
OrbitPolicy
by @imrn99 in #238 - move
OrbitPolicy
to the components submodule by @imrn99 in #250 - delete the i-cell collection structures by @imrn99 in #251
- update basic operations of
CMap2
by @imrn99 in #252 - delete the
utils
featureby @imrn99 in #254 - delete the
io
feature by @imrn99 in #255 - make dimension an argument of sew/link methods by @imrn99 in #253
- update sew variants by @imrn99 in #261
fix:
- use transactional ID computation in
atomically_two_sew
by @imrn99 in #222 - elude lifetimes where possible by @imrn99 in #244
implementations of meshing kernels using combinatorial maps
new:
refactor:
- use prealloc methods for edge splitting by @imrn99 in #203
- add intermediate compute before step 2 by @imrn99 in #205
- improve dart preallocation code by @imrn99 in #211
- rewrite step 1 to enable parallelization by @imrn99 in #210
- clean-up module code by @imrn99 in #216
core structures & methods benchmarks
new:
- add
fetch_...
methods benchmarks by @imrn99 in #202 - add a criterion bench for triangulation functions by @imrn99 in #207
- add binaries to bench scaling of non-conflicting transactions by @imrn99 in #240
refactor:
- unify naming & update doc by @imrn99 in #218
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
new:
- add STM usage example by @imrn99 in #248
refactor:
- update user guide & Pages deploy by @imrn99 in #217
This update contains breaking changes
new:
- add a new Cargo profile dedicated to profiling (e.g.
perf
, flamegraphes, ...) by @imrn99 in #157
refactor:
- replace some explicit
panic!
andunwrap
calls with cleaner alternatives by @imrn99 in #174 and #176 - cleanup error enums by @imrn99 in #190
- replace regular prints with prints to stderr for warnings by @imrn99 in #192
- turn edge-splitting methods into kernel-crate functions by @imrn99 in #193
deps:
- bump codecov/codecov-action from 4.5.0 to 4.6.0 by @dependabot in #182
- minimize dependency tree by @imrn99 in #165
- bump
egui_dock
from 0.13.0 to 0.14.0 &bevy_egui
from 0.29.0 to 0.30.0 by @imrn99 in #187 - bump:
rustversion
from 1.0.15 to 1.0.18bevy
from 0.14.1 to 0.14.2bevy_mod_outline
from 0.8.1 to 0.8.3
main crate
This is a reexport-only crate used to provide a single, clean user-facing API
added in #160
core definitions and tools for combinatorial map implementation
new:
- add utility method
set_beta
toCMap2
by @imrn99 in #170 - add no-allocation variants of
split_edge
&splitn_edge
by @imrn99 in #180
refactor:
- reorganize crate content and add a
prelude
module by @imrn99 in #159 - replace
from_ *
function ofCMapBuilder
by trait impls by @imrn99 in #163 - remove
Orbit2::is_isolated
by @imrn99 in #167 - remove lifetime from
OrbitPolicy
& updateAttributeBind
by @imrn99 in #173 - remove
CMapError
by @imrn99 in #171 - improve some error enums by @imrn99 in #169
- replace attribute-related panics with warnings by @imrn99 in #178
- remove panics from manager storage accesses by @imrn99 in #179
fix:
- correct face computation in serializing code by @imrn99 in #168
implementations of meshing kernels using combinatorial maps
new:
- implement polygon triangulation routines by @imrn99 in #177
- setup grisubal benchmark framework by @imrn99 in #164
visualization tool for combinatorial maps
refactor:
- rewrite render tool using
bevy
instead ofwgpu
by @imrn99 in #144
core structures & methods benchmarks
new:
- setup grisubal benchmark framework by @imrn99 in #164
- add scripts to streamline the benchmarking process by @imrn99 in #191
- add benchmarking tools for the grid building routines by @imrn99 in #194
refactor:
- remove irrelevant benchmarks by @imrn99 in #195
project examples
- improve and filter-out examples by @imrn99 in #156
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
refactor:
- update user guide structure & content by @imrn99 in #161
- update rustdoc & user guide by @imrn99 in #166
This update contains breaking changes
fix:
- fix errors introduced by
rand
update by @imrn99 in #130 - indent lists in doc correctly to comply with clippy by @imrn99 in #126
deps:
- bump codecov/codecov-action from 4.4.1 to 4.5.0 by @dependabot in #112
- update iai-callgrind requirement from 0.11.0 to 0.12.0 by @dependabot in #133
- bump
vtkio
version to0.7.0-rc1
& disable its default features by @imrn99 in #142 - update iai-callgrind requirement from 0.12.0 to 0.13.0 by @dependabot in #145
core definitions and tools for combinatorial map implementation
new:
- add
splitn_edge
method toCMap2
by @imrn99 in #127 - add
remove_storage
method toAttrStorageManager
by @imrn99 in #128 - add origin offset directly to grid descriptor/builder by @imrn99 in #148
refactor:
- rewrite
Vertex2
&Vector2
as tuple structs by @imrn99 in #124
fix:
- extend generic attribute storages when adding darts by @imrn99 in #122
implementations of meshing kernels using combinatorial maps
new:
- add an overlay grid type algorithm:
grisubal
; it takes a 2D boundary as input and return a combinatorial map of the boundary, captured in an orthogonal grid; an optional clipping step is also implemented- this was implemented in PRs #109, #111, #113, #115, #114, #116, #123, #119, #129, #131, #134, #135, #136, #137, #138, #140, #141, #143, #146, #147, #149, #151, and #152
test:
- add coverage using basic geometries by @imrn99 in #139
visualization tool for combinatorial maps
fix:
- add condition over shrink dir to prevent some crashes by @imrn99 in #121
project examples
new:
- add example for the
grisubal
kernel by @imrn99 in #120
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
new:
This update contains breaking changes
- update visuals in code documentation & user guide by @imrn99 in #95
- bump various actions' versions
core definitions and tools for combinatorial map implementation
- implement a generic attribute system to bind custom data structures to topological entities of a
CMap2
- implement
AttrStorageManager
struct andAttributeStorage
trait by @imrn99 in #89 - replace standalone impl blocks of attribute collections by @imrn99 in #92
- add
UnknownAttributeStorage
trait for attribute-agnostic methods by @imrn99 in #96 - replace
Any
byUnknownAttributeStorage
to handle collections in attribute manager by @imrn99 in #97 - add storage manager to builder by @imrn99 in #102
- add generic storage manager to
CMap2
by @imrn99 in #103
- implement
- change internal Vtk building routine to return a
Result
by @imrn99 in #91 - expand
BuilderError
with more specialized variants by @imrn99 in #91
- remove the feature matrix from the test CI, which now uses the
--all-features
option
core definitions and tools for combinatorial map implementation
new:
- add
CMap2::split_edge
for future algorithm implementations by @imrn99 in #83 - add
CMapBuilder
structure by @imrn99 in #87
refactor:
- deprecate old constructors by @imrn99 in #88
visualization tool for combinatorial maps
fix:
- update aspect ratio to prevent deformation of the rendered map by @imrn99 in #85
- shrink face relatively to their original sizes by @imrn99 in #86
refactor:
- update and fix benchmarks by @imrn99 in #84
New changelog format!
- rename non-published members' folder name (#77)
- bump various dependencies' version & update code accordingly (#70, #81):
iai-callgrind
from0.10.2
to0.11.0
smaa
from0.13.0
to0.14.0
wgpu
from0.19.4
to0.20.0
winit
from0.29.15
to0.30.0
- implement nightly conditional compilation for doc generation (#66)
core definitions and tools for combinatorial map implementation
new:
- implement basic I/O logic for
CMap2
using thevtkio
crate (#73, 75)- the scope of the support is detailed in the Rust Doc
- new method & function are available when enabling the new
io
feature
- add a new feature,
io
, used to gate the implementation of VTK I/O code (#73)
refactor:
- remove the
FloatType
alias and thesingle_precision
feature (#74, #76) - replace
CoordsFloat
implementation blocks to automatize implementation for all types that fit the traits requirement (#68) - remove
FloatType
from the public API (#68) - change some main methods return type to have better overall consistency (#67):
Vector2::normal_dir
now returns a result instead of potentially panickingCMap2::vertex
now returns a result instead of panicking if no associated vertex is found
- remove deprecated items from the last release (#64):
AttrSparseVec::get_mut
,AttrCompactVec::get_mut
utils::square_cmap2
,utils::splitsquare_cmap2
fix:
- correct the usage of epsilon values for floating point numbers comparison in tests (#79)
visualization tool for combinatorial maps
refactor:
- replace the
Runner
struct by a simplerlaunch
function (#70)- the function takes the same parameters that were provided to
Runner::run
- the function takes the same parameters that were provided to
- rewrite & reorganize most of the internal code due to
winit
update (#70)
project examples
new:
- add three new examples to illustrate the new I/O features of the core crate (#73, #75)
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
- update usage information & content (#82)
- bump
rand
version from0.8.5
to0.9.0-alpha.1
& update code accordingly (#63)
core definitions and tools for combinatorial map implementation
- expand on tests of the core crate (#49)
- implement the
GridBuilder
struct as a better, more versatile way to generate grid maps (#60)
project examples
- add the following examples:
render_squaremap_parameterized
(#60)render_squaremap_shift
, based on benchmarking code (#52)render_squaremap_split_diff
, based on benchmarking code (#52)render_squaremap_split_some
, based on benchmarking code (#52)
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
- update usage instructions (#50)
- add a References section to the index (#61)
visualization tool for combinatorial maps
- add code to properly render faces instead of using implicit coloring (#54)
- this implied creating new internal structures for efficiency purposes
- add a cap on the number of frames rendered per second to fix speed disparity induced by machine performance (#56)
- mark as deprecated:
AttrSparseVec::get_mut
,AttrCompactVec::get_mut
(#49)utils::square_cmap2
,utils::splitsquare_cmap2
(#60)
- fix various
clippy::pedantic
lints that were temporarily left as allowed (#51) - fix some unwanted behaviors:
- attribute re-insertion in
CMap2::two_unsew
(#55) - not-panicking execution paths of
CMap2::one_sew
&CMap2::two_sew
(#59)
- attribute re-insertion in
- fix
memory_usage
Rust code and associated script (#55)
- update render code to:
- skip darts and faces that have only one or less vertex defined (#59)
- draw proper arrows instead of triangles (#62)
- draw beta2 function as diamonds (#62)
- edit the shader to color triangles according to the entity they form (#62)
- add a key binding (F1) to close the render window (#62)
This update contains breaking changes
core structures & methods benchmarks
- move and update all benchmarks previously defined in
honeycomb-utils
to this crate (#31, #36)
core definitions and tools for combinatorial map implementation
- add two new structures for 2D spatial representation:
Vertex2
&Vector2
, which act as wrappers around aCoords2
value (#25) - remove the
Vertex2
type alias in favor of the new structure (#25) - add a new public module,
utils
, compiled when theutils
feature is enabled (#31)- the module contains functions previously defined in the
honeycomb-utils
crate
- the module contains functions previously defined in the
- add two new traits,
AttributeLogic
andAttributeSupport
, for basic attribute genericity (#33) - implement new attribute traits for the
Vertex2
struct (#33) - add two storage structures for generic attributes
AttributeSparseVec
andAttributeSparseVec
(#34) - add collection structures that can be used to retrieve all cells of a given dimension of a map (#36)
project examples
- move all examples previously defined in
honeycomb-utils
&honeycomb-render
to this crate (#29) - update examples
- to reflect mark removal (#24)
- to fix import path of utility functions (#31)
- to fit new
CMap2
methods signature (#36)
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
- add pages for the new project members (#32)
- change visibility of all
honeycomb-core
modules to private & re-export types accordingly (#23) - rename
TwoMap
/Orbit
toCMap2
/Orbit2
for consistency (#23) - remove marks table from
DartData
(#24), resulting in a signature change for many functions and structures (anything withconst N_MARKS: usize
) ' - update code to make use of the new 2D representation structures (#25)
- reorganize internal module structure (#27, #42)
- create modules
cells
,spatial_repr
,attributes
- move
orbits
,coords
,vector
,vertex
, inside new modules - clean-up source files
- create modules
- rename the
benchmarking_utils
feature toutils
(#31) - rework the structure and interface of
CMap2
(#36)- implement the new cell id computation logic
- replace the vertex storage with an
AttributeSparseVec
- add support for incomplete vertex orbits in
Orbit2
implementation (#36) - remove
darts
,embed
modules and their content (#42)- move ID aliases to
cells
andcells::collections
modules
- move ID aliases to
- update the
CMap2
quickstart example (#43) - change the
CMap2::n_darts
method's return type to be more intuitive (#45)- add the
CMap2::n_unused_darts
method to provide an alternative to the old method
- add the
- remove the
CMap2::set_beta
method because of the lack of valid use case (#45) - gate the
CMap2::set_betas
behind theutils
feature (#45)
- update all references to renamed types (#23)
- remove
honeycomb-utils
page (#32) - update index, summary, core & render pages (#32)
visualization tool for combinatorial maps
- update code:
- to reflect mark removal (#24)
- to make use of the new 2D representation structures (#25)
- to fit new
CMap2
methods signature (#36)
utility routines used in benchmarking and testing
- remove this crate in favor of:
- a new member dedicated to benchmarks (#31)
- a new member dedicated to examples (#29)
- a new
utils
module in the core crate (#31)
core definitions and tools for combinatorial map implementation
Orbit<'a, const N_MARKS: usize, T: CoordsFloat>
- Generic implementation for 2D orbit computations. The structure itself only contains meta-data, the orbit computation is done through theIterator
trait implementation (#18)OrbitPolicy<'a>
- Enum used to specify the beta functions used by an orbit. It currently does not support compositions (#18)- New (temporary?) method for
TwoMap
:beta_runtime
. It works by redirecting to the originalbeta
method, using match block and a beta identifier provided at runtime (#18)
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
- update content of the workspace section to include new member (#19)
- update honeycomb-core's page content (#19)
visualization tool for combinatorial maps
- implement
TwoMap
rendering code - add examples illustrating basic usage
- remove
Cargo.lock
file from the repository - add changelog file (this one!)
core definitions and tools for combinatorial map implementation
Coords2<T: CoordsFloat>
- Custom 2D coordinates representation using a generic type for inner value.- refactor two attributes of
TwoMap
:free_darts: Vec<DartIdentifier>
: rename tounused_darts
& change type toBTreeSet
free_vertices: Vec<VertexIdentifier>
: rename tounused_vertices
& change type toBTreeSet
mdbook-based user guide with information regarding usage & non-code-related aspects of the project
- update usage instructions
utility routines used in benchmarking and testing
- update content according to features introduced in #15, #16
- new CI workflow:
bench
: run hardware-counter based benchmarks on new version release
core definitions and tools for combinatorial map implementation
- introduce
benchmarking_utils
feature, used to compile additional methods & trait implementation useful for benchmarking
mdbook-based user guide with information regarding usage & non-code-related aspects of the project.
- complete (partially) definition sections (#5)
- add documentation for the core implementations (#5)
- add usage instructions (#12)
- add
honeycomb-utils
section (#12)
utility routines used in benchmarking and testing
- benchmarks for the
TwoMap
structure and methods (#10, #11) - utility functions for benchmarking and testing.
- example of memory usage information for a given
TwoMap
- typos by @cedricchevalier19 (#9)
- new CI workflows:
doc
: build & deploy user guide and code documentationrust-test
: run Rust tests, format checker & linter (clippy
)
core definitions and tools for combinatorial map implementation
TwoMap
- basic 2D combinatorial map implementation- full documentation support & deployment
mdbook-based user guide with information regarding usage & non-code-related aspects of the project