Skip to content
This repository has been archived by the owner on Jul 23, 2022. It is now read-only.

Latest commit

 

History

History
812 lines (561 loc) · 38.5 KB

CHANGELOG.md

File metadata and controls

812 lines (561 loc) · 38.5 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Table of contents

  1. Unreleased
  2. v1.1.1
    1. v0.13.0
    2. v0.12.1
      1. v0.12.0
    3. v0.11.1
      1. v0.11.0
    4. v0.10.0
    5. v0.9.0
    6. v0.8.0
    7. v0.7.1
      1. v0.7.0
    8. v1.0.0-yanked
    9. v0.6.1
      1. v0.6.0
    10. v0.5.0
    11. v0.4.1
      1. v0.4.0
    12. v0.3.1
      1. v0.3.0
    13. v0.2.4
      1. v0.2.3
      2. v0.2.2
      3. v0.2.1
      4. v0.2.0
    14. v0.1.5
      1. v0.1.4
      2. v0.1.3
      3. v0.1.2
      4. v0.1.1
      5. v0.1.0

Added

-

Changed

-

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed

Removed

-

Fixed

-

Security

-

This repository works solid and is used for research. However, it was a student-project and a master-thesis and fulfilled its main purpose perfectly. The amount of changes since the last version are very extensive. Because of this, the changes are not described here.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed

Added

  • Add metric-access in graph to all metrics instead of working around it via unnecessary and non-performant access-methods.
  • Add licenses of all dependencies to new license (see changed).
  • Update README.md by adding cgal-installation.
  • Add notes to notes.md about routing-heuristics via population-data and add some info from github-issues.
  • Add balancer.rs and module exploration.rs, which are unfinished yet, but are causing the license-change to GPL when compiled with the feature gpl.

Changed

  • Improve graph-access using Iterators more efficiently.
  • Improve routing- and cost-usage.
    • Improve access to path-costs of a (shortest) path.
    • Implement path-flattening to support unified shortcut-paths and to improve path's cost-accuracy.
  • Refactor Cargo.toml to support new licensing.
  • Replace feature osmgraphing by feature gpl to support new licensing.
  • Refactor configs completely, also differentiating between implementation, unaccessable from outside (like the raw-configs), and the module, accessable. This makes the implementation more flexible and improves maintenance, especially when generating metrics from others.
    • Rename generating to writing and use the word generating for generating metrics. Further, rewrite the graph-writing-module.
    • Remove collected config and use each sub-config (parsing, writing, routing) separatedly.
    • Routing-config has to be created after the graph has been parsed, to have the parsing-config being up-to-date.
    • Change the yaml-syntax to be much more (probably 100 %) explicit and intuitive, leading to a very explicit and verbose implementation, which is easy to extend in complex manners.
      • Separate parsing graph-data from generating graph-data. This also includes refactoring the graph-builder a lot.
        • At first, the new approach creates the graph as provided, before the specified metrics will be generated. The parsing-config in the graph is being updated during the generation-process.
        • A new feature with this approach is the conversion of metrics (like meters to kilometers) and the manipulation of the graph after it has been created.
      • Update all existing yaml-files.
      • Update the binary osmgraphing.rs and merge the .
      • Update the parsers (fmi and pbf) accordingly.
  • Don't make things too abstract and use node-indices for computing best paths (instead of created nodes).
  • Return Err(String) in main-methods instead of printing the error and calling std::process::exit(1) to improve readability in certain cases, like testing, when the printed output is swallowed automatically.
  • Refactor helpers.
  • Update tests.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • The explorator compares vec![f64], which only compares the first number of each vector. Replace this by using a helper-method le (lower-equals) iterating over the values.
  • When correcting shortcut-indices after removing duplicated edges, the iteration is done forward, but should be done backward. Otherwise, it leads to wrong shortcuts, loop-references and index-overflows.

Removed

  • The binary mapgenerator is now a part of the binary osmgraphing using a flag.
  • Replace LICENSE by LICENSE.md
    • New license separating code relating to Apache and GPL.
  • Move code of module units into separate cargo-crate kissunits.

Fixed

  • Fix scripts (some bash-syntax has changed?).
  • Add link for v0.12.1 in CHANGELOG.md.

Changed

  • Change style of LICENSE and write it with markdown.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • CHANGELOG.md has a missing link for v0.12.1.

Added

  • Support generating fmi-files with src- and dst-indices as column.
  • Extend configs
    • Implement config-parser's categories separate from config-generator's categories to guarantee ideal support.
    • Add is-ch-dijkstra to routing-config (needing a keyword for metrics).
    • Extend parser to check config before starting parsing.
  • Support graphs created via contraction-hierarchies and efficient routing on these graphs.
    • Extend the bidirectional Dijkstra to support normal and contracted graphs efficiently with one implementation (using a flag and lazy bool-evaluation).
      • Add contraction-hierarchies-level to nodes. Further, let the graphbuilder sort edge-ids by level to allow break instead of continue when iterating over leaving-edges in the bidirectional CH-Dijkstra.
      • Add ProtoShortcuts and replace ProtoEdges.
      • Add very basic parsing-tests.
      • Add isle-of-man.ch.fmi and its config, and update pbf-to-fmi.yaml respectively.
      • Add small.ch.fmi and its config.yaml` respectively.
      • Extend parser by removing duplicates.
        • Add duplicates to some test-maps.
    • Extend the graph to access shortcuts and node-level quickly and memory-efficient (via offsets). Make graph-output prettier and add shortcuts.
    • Extend the graphbuilder to build shortcuts and their shortcuts.
    • Extend the graphbuilder to build in different stages. This allows a better naming-convention for intermediate proto-edge-types and improves maintenance a lot.
  • Add script for doing benchmarks.
  • Add script for creating flamegraphs.
  • Add many defaults
    • Move defaults for SmallVec-inline-size into a new submodule capacity.
    • Add metric-unit-defaults and use them overall.
    • Add realistic accuracy-limits (1e-6 is way enough, as explained in the respective module defaults, and EPSILON could easily fail due to rounding-errors).
    • Add capacity-defaults, like the bytes-limit per chunk when building the graph.
  • Add helpers
    • Add trait MemSize considering runtime-dependencies like the number of metrics in a edge.
  • Add units and test-cases, and replace many places, where units are relevant.
    • It could make sense to export units as own module (Kilometers, Meters, Seconds, Minutes, Hours, KilometersPerHour)

Changed

  • Config-parser-category Ignore is allowed to have the id Ignore, which may occur multiple times. For this, no other config-parser-category is allowed to have an id Ignore. It's not hardcoded but named after the enum-variant.
  • Edit generated fmi-map-files.
    • Let generator print ids of the provided config-edge-categories, not their categories.
    • Let generator print Ignore-column as _.
  • Make graphbuilder much more efficient in performance and memory (both around 25 %).
    • Replace BTreeMap of graphbuilder by Vec and a handy (forced) way of adding graph-components. This needs a replacement of node-ids by node-indices during build-phase.
    • Replace f32 by f64 thanks to the new optimized graphbuilder.
  • Slightly update repo, updating code-of-conduct and contributing slightly, and replacing Apache-2.0-LICENSE-description by a shorter, more general description of it (including purpose).
  • Update all maps to be up-to-date (March 14th, 2020).
    • Extend parser by some new special-cases (also from older maps).
  • Change how random routes are generated in binary osmgraphing, using generators (closures) now.
  • Make graph-access handier by adding/editting functions like MetricAccessor::get_more(...).
  • Move SteetType-documentation into code (where the defaults are set) :).
  • Implement routing::paths::Path as vector of edge-indices.
    • This improves efficiency, since no extra intermediate node-mapping is needed, which has to be remapped to edges afterwards.
    • Costs are not stored in the path anymore, but can be calculated. One reason for this are shortcuts, which could have slightly different cost than their underlying edges due to rounding-errors. Thanks to the edge-indices in the path, the path is more flexible. It is possible to ask for every possible metric-combination, even for those, which are not optimized by the Dijkstra.
    • Paths can be flattened.
  • Cleanup/refactor module helpers and tests a little.
    • Move dijkstra-testing and dijkstra-comparison into helpers, reducing code-duplicates in tests.
    • Extend some tests or refactor some tests.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..

Removed

  • Remove routing::paths::{VecPath, HashPath}.

Fixed

  • Let scripts check cargo fmt before building, so user has to format code manually before running it with the script.
  • Using Vec::splice(...) in Dijkstra is too expensive in performance, hence it has been replaced by Vec::resize(...).
  • Let binary osmgraphing exit with exit-code non-zero, if an error occurs (before, it just returned).

Added

  • Let generator add the edge-metric-count/dim to a fmi-map-file.

Changed

  • Make example-maps and -configs prettier.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • Comparing f32 could be wrong due to hard criterion <= std::f32::EPSILON.
  • When generating a map, only the parser-config's metrics are counted for setting the generated dimension, but it is possible to generate a map of less metrics.
  • The build-script doesn't check format neither formats the code.
  • In case of an error, the binary osmgraphing does return, with error-code 0, instead of returning a non-zero exit-code.

Fixed

  • Let generator convert metrics from kilometers in meters, because parser does read it in meters.
  • Count param-indices correctly in fmi-parser by moving param_idx out of the loop-head to a mutable variable.

Added

  • Implement a mapgenerator generating fmi-map-files by converting from one format to another via config-files.
    • Implement a module generating.
    • Generate and test isle-of-man.fmi out of isle-of-man.pbf.
    • Implement a config for pbf-to-fmi-conversion.
  • Make config cleaner and more flexible.
    • Add configs for every map, that is being tested.
    • Add respective test-cases.
    • Add support for NodeCategorys and add variants to EdgeCategorys.
  • Implement a nice trait for supporting file-extensions in a general way.

Changed

  • Bring sense to TOC in CHANGELOG.md.
  • Update README.md.
  • Reduce default-inline-size of SmallVec from 5 to 4 (pub const SMALL_VEC_INLINE_SIZE: usize = 4).
  • Move existing module parsing and new module generating into one module called io.
  • Extend parser's preprocessing by checking config.
  • Make config cleaner and more flexible.
    • Refactor config completely by separating strictly between raw-config (direct result of deserialization) and the final config-version.
    • Rename config-attributes and config-methods.
    • Use Option<...> for large config-parts (parser vs generator vs routing).
    • Rename config schema.yaml to blueprint.yaml to keep the keyword schema free.
    • Split EdgeCategory::NodeId to EdgeCategory::SrcId and EdgeCategory::DstId.
    • Let config remember every id (expect for ignore).
  • Update notes.md.
  • Update ProtoNode
    • Make graphbuilder's ProtoNode public.
    • Let ProtoNode remember a bool instead of an edge-count for the info, whether it is part of an edge.
  • Simplify metric-access in graph.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • Problem: The generator doesn't convert metrics from kilometers in meters, but parser reads only meters.
  • Problem: The fmi-parser is not counting the param-indices correctly. If the number of EdgeCategorys in a config-file for fmi-files is higher than the number of elements provided by the fmi-parser, the file cannot be parsed. This case is relevant since EdgeCategorys don't have to be provided by the map-file, but could be calculated.

Removed

  • Make config cleaner and more flexible.
    • Simplify tests by creating configs directly (instead of using enum TestType).

Fixed

  • Let little build-script stop when error occurs.
  • Remove use of mul_add to allow compiler to optimize loop (SIMD).
  • Let graphbuilder remove edge-duplicates (same src, same dst and exactly, not approximately, same metric). This will also be efficient for shortcuts wrt contraction-hierarchies.

Added

  • Add support for routing-config using existing config-files or a str-parser.
    • Let the new routing-config specify the metrics used by the Dijkstra.
    • Let the new routing-config specify preferences for each metric.
    • Let the big Config being built by a ProtoConfig to support dependencies between Config-components (like cfg.routing, having a list of ids, depends on the mapping from id to idx, which is stored in cfg.graph).
    • Add tests considering the routing-config.
  • Support multiple metrics in Dijkstra, using dot-product with a preference-vector.
  • Little build-script for convenience.
  • Create module helpers collecting handy functions and adding approximation-comparison for f32 (like ApproxEq or ApproxCmp).

Changed

  • Rename container-structs in graph to accessors, since they are only accessing, not owning the graph's data.
  • Refactor and update notes.md.
  • Rename metric-categories in configs as the expected unit (like Length -> Meters), because explicit is better than implicit.
  • Extend binary osmgraphing
    • Move complexity from examples to binary.
    • Make examples less complex.
    • Let binary accept logging-level as cli-arg.
  • Move module defaults from network to a global module. Rename its content accordingly and extend it.
  • Refactor metrics
    • Replace units Meters by Kilometers and Milliseconds by Seconds to keep numbers nearer to 1.0, which is nearer to the routing-preferences (alpha). This, hopefully, improves routing-calculations' accuracy.
    • Let very small non-zero metrics, which are around (or exactly) 0.0, be std::f32::EPSILON instead of 1.0.
    • Remove trait Metric for more simplicity.
    • Replace all metrics and calculations in u32 by f32. Coordinates are included and uses f32 from now.
    • Add tests for unit-conversions/-calculations.
  • Improve memory-consumption by using inlining via SmallVec at certain spots.
    • Makes the use of par_iter() (instead of iter()) in pbf-parser great again.
  • Simplify graph-access-functions by replacing return-values with panic!s.
  • Rename all occurences of type to category.
  • Make test-implementations fabulous again.
    • Now, the main-test-files are separated and have a cleaner overview than the underscore-naming-convention and the first approach, where all tests have been in one single test-script.
    • Create a module helpers containing general implementations, which can be used by the real test-functions. This makes the tests cleaner.
    • Testing configs is part of parsing-tests.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..

Removed

  • Remove Astar completely, since this project will be used with multiple (custom) metrics and a graph contracted via contraction hierarchies. The old implementation is kept in a kutgw-branch. This makes the routing-module much less complex.
    • Remove unidirectional Dijkstra since the bidirectional Dijkstra uses only one priority-queue, so overhead for short routes is, if existent, very small.
    • Remove generics, since their main-purpose has been supporting estimation-functions of Astar. For the cost-functions, use the metric-indices from the routing-config instead.
    • Remove some CostNode-implementations.
    • Remove routing::factory.
  • Remove graph-functions accessing specific metrics, so only one access-method remains.
  • Replace branch master by nightly to emphasize the difference between releases and master.

Fixed

  • Fix markdown-references in old headings in CHANGELOG.md.
  • Replace std::process::exit(...) by panic!(...) to improve feedback, e.g. in tests (where logging-messages are swallowed).

Added

  • Implement zero() for geo::Coordinate.
  • Implement trait Metric for u32.
  • Add format-check to github-action (cargo fmt -- --check).
  • Support mulitple metrics, where the number is only known during runtime.
  • Parse graph with config instead of map-file, which can be provided as yaml-file.
    • Let metrics have ids.
    • Let routing-algorithms access graph-metrics with metric-idx.
    • Add default-configs for maps isle-of-man and simple-stuttgart.
    • Describe every option in a full config (like a schema).
    • Support for different vehicle-categories.
    • Add tests for deserializing the default-configs.
  • Add module helpers for general, handy implementations.
    • The struct MapFileExt (name before: Type) is being moved from module parsing to here.
    • Initializing logging-levels is being moved from examples and executables to here.
    • In the future: dot-product

Changed

  • Implement clean ordering- and equal-traits for CostNodes in the routing-modules.
  • Let github-action upload results of benches in a folder called like the commit-hash.
  • Let github-action deploy-and-tag only in a branch called release to remove continue-on-error
  • Improve memory-usage, performance and code-style of metrics and graphbuilding.
    • Store metrics in the graph as Vec<Vec<u32>> (instead of Vec<Vec<MetricU32>> or multiple vecs).
    • Access metrics as u32 or access it as metric (like Meters).
    • Let graphbuilder add metrics with limited memory-usage.
    • Consume metrics after adding them to graph, but keep ids.
    • Sort proto-edges unstable to sort them fully in-place.
  • Simplify indices-structs and metric-structs.
    • Make underlying u32-values implicit (Struct(u32)) instead of explicit (Struct { value: u32 }).
    • Implement Deref and DerefMut for them, replacing value(), to_usize() and similar.
  • Push proto-edges in graphbuilder as struct, not as separate attributes.
  • Make parser-functions dependent of self to add preprocessing-phase.
    • The fmi-parser uses this preprocessing-phase to determine the node- and edge-ranges in the provided file using the counts at the beginning of a fmi-map-file.
  • Rename structs and fields, whose names based on "type", because this is a reserved keyword.
  • Make pbf-parser single-threaded, since runtime's bottleneck is allocating memory many times. The runtime for parsing ways single-threaded and multi-threaded was identical (3:30 minutes for multi-threaded, 3:20 minutes for single-threaded). The times are much faster, if the RAM has remaining capacity and doesn't have to use the swap-partition, which has been tested with a Germany-fmi-file with half the number of nodes as the Germany-pbf-file.
  • Refactor tests making their names uniformly.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • CHANGELOG.md has wrong markdown-references in old headings.

Removed

  • Remove MetricU32.
  • Due to the new configs, edge-distances can not be calculated for some edges, which are missing this value, but only for all or none.

Fixed

  • Improve graphbuilder's memory-usage. By estimating the amount of proto-edges referring to 200 MB (could be changed in the future), the graphbuilder can add only these proto-edges before reallocating. This limits the needed memory-usage.
  • Add labels in benches to identify non-existent ids/indices.

Added

  • Add wiki-content to cargo-documentation and extend README.md
  • Add file notes.md for information, which
    • is not needed anywhere else.
    • is future-documentation.
    • is a future-issue.
  • Stop ignoring Cargo.lock in .gitignore.
  • Add playground-example for generating random numbers.
  • Extend routing
    • Implement a bidirectional Astar.
    • Implement a real Dijkstra without estimation-function, meaning explicitly instead of implicitly having the estimation-function returning zero.
    • Extend routing-factory accordingly.
    • Benchmarks for routing-algorithms, added to github-actions as new job uploading results as artifacts.
    • Add new testing-map with respective tests especially designed for baiting bidirectional Astar. It has paths between some nodes, whose best path wrt smallest weight is not the best path wrt hop-distance.
    • Add random-route-pairs to astar-example basing on random numbers generated by a seeded uniformly distribution.
  • Add trait Display as dependency for trait Metric.

Changed

  • Change graph-building
    • Reduce additional memory-usage when building graph. Now, when data is not used anymore, but already stored in the graph, it is dropped.
    • Remove way-id from the graphbuilder since it is not used anyways.
    • Let parser already deliver metrics instead of primitives.
  • Extract the github-action-step deploy-and-tag as separate job.
  • Change routing
    • Refactor complete module to improve code-structure of new modules (-> see section Added).
    • Make paths-module more public. Still keep access to underlying implementation-struct (VecPath or HashPath) private to be flexible over changes.
    • Merge some test-modules to reduce folder-complexity and redundant code.
  • Rename some methods more explicetly, like geo::Coordinate::from -> geo::Coordinate::from_64.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • CostNodes in the routing-modules are implementing ordering- and equal-traits sloppy.

Fixed

  • In CHANGELOG.md, markdown-links (not URLs!) in the table-of-contents should be persistent, meaning #v1.0.0-yanked should be #v1.0.0.
  • In example astar, the distance has been printed with two units (123 m m).
  • Add an alternative best route to a test-case of the small graph, that has been missing.

Changed

  • Fix link to docs.rs in README.md

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • Routing should be extended by a bidirectional Astar.
  • The link to doc.rs is hardcoded to major.minor.patch=0.y.z because docs.rs chooses version 1.0.0 though it's yanked..
  • Building the graph uses too much additional memory due to not dropping unused data though it is already stored in the graph.

Added

  • Implement access to forward-edges and backward-edges, as preparation to the bidirectional Dijkstra, .
    • Process queries for forward-edges and backward-edges by the same code, due to the new pattern with the shallow containers. To achieve this without additional performance-cost, use a index-mapping for offsets, while accessing all other components (node-indices and metrics) directly.
    • Extend graph-construction-tests for backward-edges.
  • Add documentation for the graph.
  • Add a metric-system replacing primitive data-types.
    • Support typical calculations as v = s/t, typed correctly (meters / milliseconds -> km/h).

Changed

  • Comment in Cargo.toml, over changing the version, to not forget changing the CHANGELOG.md.
  • Refactor the graph by a new pattern.
    • Add new examples playing around with different patterns (RefCell vs moving vs borrowing).
    • Store the data in arrays in one single struct (the graph), while granting access over layer-structs borrowing these arrays and executing user-queries. This makes maintainability without breaking changes easier.
    • Let the graph-interface allow access via NodeContainer and EdgeContainer.
  • Replace the use of usize by new structs, NodeIdx and EdgeIdx, to control the access to graph-components.
  • Refactor logging slightly by adding progress-bars to parsing and building.
  • Use a new type-parameter in the Astar for a metric-type, which are added in this release.
    • Change the access to best-path-algorithms slightly.

Deprecated

  • Documentation is missing, though comments are very well.
  • CHANGELOG.md contains empty version-descriptions.
    • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
    • Inconsistent semver in old tags -> probably cargo yank VERSION needed
  • Routing should be extended by a bidirectional Astar.

Removed

  • The feature showing whether an edge is enabled is being removed to make handling backward-edges easier.
  • Edge-IDs are not needed and hence removed.
  • When building and finalizing the graph, ProtoNodes and ProtoEdges don't need ordering implemented, hence these implementations are removed.

Added

  • Add CHANGELOG.md. :)
  • Add GitHub-action automatically testing and deploying. As improvement over travis-ci, it tags commits automatically if the Cargo.toml-version has changed and pushed. Before, both (tag and Cargo.toml) had to be updated.

Changed

  • The README.md has no longer News due to the new CHANGELOG.md.

Deprecated <a name="v1.0.0/deprecated>

  • CHANGELOG.md contains empty version-descriptions.
  • Replace existing tags with ones referring to CHANGELOG.md and add old tag-texts to the CHANGELOG.md
  • Inconsistent semver in tagging -> probably cargo yank VERSION needed
  • The graph-interface should allow access via node- and edge-containers
    • This would improve maintainability and reduce number of breaking changes in the future.
    • Further, it would allow using multidimensional metrics easier an probably improves caching thanks to Structure of Arrays instead of currently used Array of Structures
  • The graph containing forward-edges will be extended by backward-edges.
    • The feature showing whether an edge is enabled will be removed.
  • Routing should be extended by a bidirectional Astar.

Removed <a name="v1.0.0/removed>

  • The braess-optimization has been removed (to a kutgw-branch), since it's just kind of a big playground and interferes with future code, at least when testing.
  • Travis-CI has been replaced by GitHub-workflows (-> see section Added).

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo

Deprecated

  • todo