SortingNetworks VS tock

Compare SortingNetworks vs tock and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
SortingNetworks tock
7 32
20 4,990
- 1.4%
5.2 9.9
over 2 years ago 3 days ago
C# Rust
MIT License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

SortingNetworks

Posts with mentions or reviews of SortingNetworks. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-11.
  • NSA Cybersecurity Information Sheet remarks on C and C++.
    7 projects | /r/cpp | 11 Nov 2022
    On a side-note: I did an experiment to see whether C# could match C++ for vector-intensive computing: https://github.com/zvrba/SortingNetworks
  • What are the hardest topics in C#/.NET you would like to know more/better?
    4 projects | /r/csharp | 26 Sep 2022
    Here's a concrete example of using pointers to access raw array memory and use SIMD intrinsics: https://github.com/zvrba/SortingNetworks
  • i made std::find using simd intrinsics
    2 projects | /r/cpp | 27 Nov 2021
    And now, for the fun of it, you can try with sorting. I've already done the hard work in C# (AVX2 intrinsics): https://github.com/zvrba/SortingNetworks
  • Show HN: Fast(er) Sorting with Sorting Networks
    3 projects | news.ycombinator.com | 26 Nov 2021
    > I can't read C#

    Not much different than C++...

    > Do you generate the sorting network at compile time

    No, except for power of two sizes up to 32. I experimented with run-time code generation (and compilation) for given sizes, but... the generated machine code has too long prologue and epilogue for that to be worth-while (though the sorting code itself is well optimized, as if directly compiled from source). That's also mentioned in "Benchmarks" section.

    > What's your sorting network template?

    See References.

    > And probably related: how is vectorization used?

    See the code. There's no template, the code is fully "dynamic" and adapts itself to array size. As for vectorization... it compares/swaps 8 ints/floats at once, with some swizzles to rearrange the elements. For sizes that are not power of 2, I use masked loads and stores and some extra logic for deciding which comparisons to skip. (I treat non-existing elements "as if" they were set to intmax or float infinity.)

    This file https://github.com/zvrba/SortingNetworks/blob/master/Sorting... has it all.

    > this week-end project

    Sorry, can't read Rust. (Though it reminds me of days spent coding in Perl.) Most networks are not SIMD-friendly and the code as it's now is the 3rd iteration where I figured out how to best leverage SIMD to exploit the recursiveness and regularity in the network. (Not the least, no random memory accesses: only forward and backward loads and stores.)

    Without SIMD, I don't think it'll be worth it, because network will also access the memory randomly (just as "standard" sort), and in addition it has worse algorithmic complexity.

  • Fast(er) sorting with sorting networks, part 2
    1 project | /r/csharp | 26 Nov 2021
    So recently I posted a link with code for fast sorting of int arrays. People wondered how they'd perform for large arrays (1M elements), and I conjectured they'd be way slower because of their algorithmic complexity. Turns out I was wrong, they're 3-6x faster for arrays of length up to 1M elements. Updated code and benchmarks are now available at https://github.com/zvrba/SortingNetworks
  • Fast(er) sorting with sorting networks
    1 project | /r/csharp | 14 Nov 2021
    The code (MIT license) is available here: https://github.com/zvrba/SortingNetworks

tock

Posts with mentions or reviews of tock. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-11.
  • OxidOS Automotive
    1 project | news.ycombinator.com | 17 Mar 2024
    Hi! This is Daniel from OxidOS Automotive (stating this for disclaimer purposes).

    Yes, our OS is based on TockOS, and our CEO (Alex Radovici) is #7 in the contributors list (https://github.com/tock/tock/graphs/contributors), with other colleagues contributing in the past years.

  • What is the best library to write a SCADA-like application for web?
    4 projects | /r/rust | 11 Dec 2023
  • Safety vs. Performance. A case study of C, C++ and Rust sort implementations
    11 projects | news.ycombinator.com | 5 Oct 2023
    I'm definitely not the best person to answer this, but honestly it's not bad. Here's an example of a moderately complex peripheral, the cortex-m MPU, and how one rust OS handles it:

    https://github.com/tock/tock/blob/3a0527d586702b8ae8cb242391...

    Reads and writes turn into volatile reads, so everything works out under the hood. You get the benefits of everything having good names, declared sizes, and proper typing on your register accesses. You can extend that to bit accesses as well.

    Rust still has a few areas it isn't competitive in, like your hyper limited or obscure chips (e.g. 8051s, XAP), mature tooling around formal methods, and a certification story for safety critical code. People are working on these latter two issues (e.g. ferrocene) and supposedly very close to public delivery, but you know how slow the industry is to adopt new things even then.

  • Ask HN: Any Hardware Startups Here?
    8 projects | news.ycombinator.com | 5 Jul 2023
  • Real-Time Operating Systems 101: Basics for Efficient Computing
    1 project | /r/embedded | 25 May 2023
    There's Tock (https://www.tockos.org/), which is written in Rust (with sprinkles of assembly).
  • Unwinding the Stack the Hard Way
    3 projects | news.ycombinator.com | 16 Apr 2023
    Yeah, and I like I mentioned in the earlier comment, omitting the frame pointer reduces code size by 10% on RISC-V targets, which is huge when dealing with embedded flash: https://github.com/tock/tock/pull/1660
  • Where are the C Alternatives?
    3 projects | /r/ProgrammingLanguages | 2 Apr 2023
  • Embedded real time OS
    2 projects | /r/rust | 1 Apr 2023
    Tock is an excellent embedded OS written in Rust and has some good industrial support. I think Tock gets a lot of stuff right and I highly recommend some of the talks the developers gave on it.
  • Fedora now has frame pointers
    2 projects | news.ycombinator.com | 4 Feb 2023
    Unfortunately, it increases the code size by 10%. I was looking into this just last week, and can confirm that it's still a problem on the latest version of Rust nightly: https://github.com/tock/tock/pull/1660

    I wish we could have frame pointers, because they would make working in embedded land so much easier and more reliable, but a 10% increase in code size just isn't worth it.

  • Rust OS
    2 projects | /r/rust | 16 Dec 2022
    TockOS was the first rust RTOS I found. Coincidentally, it has had support for the esp32c3 for over a year now.

What are some alternatives?

When comparing SortingNetworks and tock you can also consider the following projects:

static-sort - compile-time sorting networks in rust

awesome-embedded-rust - Curated list of resources for Embedded and Low-level development in the Rust programming language

std_find_simd - std::find simd version

rust-raspberrypi-OS-tutorials - :books: Learn to write an embedded OS in Rust :crab:

ikos - Static analyzer for C/C++ based on the theory of Abstract Interpretation.

hubris - A lightweight, memory-protected, message-passing kernel for deeply embedded systems.

pypy - The unofficial GitHub mirror of PyPy (mirrored via https://github.com/mozillazg/job-mirror-hg-repos)

redox - Mirror of https://gitlab.redox-os.org/redox-os/redox

ASP.NET Core - ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.

rtic - Real-Time Interrupt-driven Concurrency (RTIC) framework for ARM Cortex-M microcontrollers

JDK - JDK main-line development https://openjdk.org/projects/jdk

smoltcp - a smol tcp/ip stack