radix_plus 1.0.6 copy "radix_plus: ^1.0.6" to clipboard
radix_plus: ^1.0.6 copied to clipboard

in place Radix Sort implementation for Dart and Flutter, providing significant speed improvements over standard sorting for number lists.

Changelog #

1.0.6 #

  • fix(core): Resolve a critical bug in radixSortCore64 where maxValue tracking on negative signed integers (representing values >= 2^63 unsigned) led to underestimating actualPasses. The algorithm now correctly detects when any MSB is set, ensuring all 8 passes are executed. This fixes sorting behavior for lists containing both large negative and positive doubles.
  • perf(core): Optimize radixSortCore64 pass determination scan by breaking early as soon as any value with its MSB set is encountered, avoiding $O(n)$ scanning overhead.
  • perf(parallel): Optimize the parallel sorting k-way merge by representing the min-heap using parallel flat arrays (heapValues and heapChunkIndices) instead of instantiating millions of _HeapNode objects. This completely eliminates object allocation overhead during the merge loop and reduces GC pressure.
  • Optimized Parallel: k-way merge, reducing parallel sorting time by ~14–15% and significantly reducing allocation/GC overhead.
  • test(core): Add unit tests to prevent regression in float sorting with large positive and negative numbers.

1.0.5 #

  • build(sdk): Relax Dart SDK version constraint

1.0.4 #

  • perf(parallel): Overhaul parallel sorting for improved performance and memory usage.
    • Isolates are now spawned in parallel using Future.wait to reduce startup overhead.
    • radixSortParallelSigned now avoids intermediate list allocations, significantly reducing GC pressure.
    • Created a core _radixSortParallelUint32 engine to streamline parallel logic.
  • perf(bigint): Optimize radixSortBigInt memory management.
    • The auxiliary buffer is now allocated only once, reducing GC pressure during sorting.
    • Refactored and unified internal BigInt sorting functions to reduce code duplication.
  • perf(utils): Enhance buffer pool logic.
    • The get method in buffer pools now finds the best-fit buffer (>= requested size) to increase hit rate.
  • style(core): Minor code cleanup using fillRange for array initialization.

1.0.3 #

  • build(sdk): bump SDK requirement to 3.10.1
  • change(package): Rename project from Radix Pulse to Radix Plus Update package name, version to 1.0.3, and repository URLs. Adjust all internal and external references. Remove outdated API documentation.

1.0.2 #

  • fix(core): Resolve linting issues and refine parallel export logic
  • Update benchmark documentation in README and results.md with improved methodology and new performance data.
  • Add publishing metadata and topics to pubspec.yaml. Update CHANGELOG for version 1.0.1.
    • fix(core): Resolve linting issues and refine parallel export logic
    • Update benchmark documentation in README and results.md with improved methodology and new performance data.
    • Add publishing metadata and topics to pubspec.yaml. Update CHANGELOG for version 1.0.2.

1.0.1 #

feat(core): Introduce BigInt sorting, parallel enhancements, and perf optimizations

  • Add comprehensive BigInt sorting support, including radixSortBigInt and radixSortBigIntWithRange.
  • Enhance parallel sorting with radixSortParallelSigned, adaptive thread management, and k-way merge optimization.
  • Introduce zero-copy sorting APIs for typed lists: radixSortFloat64, radixSortInt32, and radixSortUint32.
  • Provide advanced float handling with radixSortFloat64WithNaN for NaN placement.
  • Implement adaptive core algorithms that fallback to insertion sort for small lists.
  • Optimize all core radix sort algorithms (int, double, BigInt) with skip passes, efficient data transformations, and improved buffer reuse for performance.
  • Overhaul README.md with new sections, detailed performance benchmarks, and expanded usage examples.
  • Add dedicated benchmark/results.md and update CONTRIBUTING.md links.
  • Implement web-platform stub for parallel sorting functions.
  • Update .gitignore to ignore example build files and add pubspec.yaml metadata.

1.0.0 #

  • Initial release.
2
likes
160
points
103
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

in place Radix Sort implementation for Dart and Flutter, providing significant speed improvements over standard sorting for number lists.

Repository (GitHub)
View/report issues
Contributing

Topics

#sort #radix-sort #algorithm

Funding

Consider supporting this project:

github.com
buymeacoffee.com
ipn.eg

License

GPL-3.0 (license)

More

Packages that depend on radix_plus