Coroutines make robot code easy for high schoolers

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

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
  • quaint-lang

    An experimental statically typed procedural language with first-class resumable functions.

  • > I would like to build a rich "process api" that can fork, merge, pause, yield, yield until, drop while, synchronize, wait (latch), react according to events. I feel every distributed systems builds this again and again.

    Years ago I attempted to build an experimental language with first-class resumable functions. Every function can be invoked by the caller through a special reference type called "quaint". The caller can resume or stop the execution of the function either after reaching a timeout, or after passing a "wait label":

    https://github.com/bbu/quaint-lang

  • preemptible-thread

    How to preempt threads in user space

  • I really like this.

    Thank you for your comment and sharing.

    I have a lightweight 1:M:N runtime (1 scheduler thread, M kernel threads, N lightweight threads) which preempts by setting hot loops to the limit.

    https://github.com/samsquire/preemptible-thread (Rust, Java and C)

    How do you preempt code that is running?

  • 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.

    InfluxDB logo
  • ceu-arduino

    Arduino binding for Céu

  • The reactivity and intuitive single-threaded concurrency makes it a really nice language for low-powered devices. Or robotics, which is a lot about reacting to sensor input.

    It has a dedicated Arduino repo too[1].

    In practice it's more of a research language by Francisco Sant’Anna, a professor at UERJ, Brazil, than a language with a big community around it. He's currently working on a new version caleld Dynamic Ceu, or dceu[2]

    In the same paradigm there is the Blech[3] language, I believe originating from Bosch. Sadly, that project also has lost some steam.

    [0] https://github.com/ceu-lang/ceu-arduino

    [1] http://ceu-lang.org/

    [2] https://github.com/fsantanna/dceu

    [3] https://github.com/blech-lang/blech

  • dceu

  • The reactivity and intuitive single-threaded concurrency makes it a really nice language for low-powered devices. Or robotics, which is a lot about reacting to sensor input.

    It has a dedicated Arduino repo too[1].

    In practice it's more of a research language by Francisco Sant’Anna, a professor at UERJ, Brazil, than a language with a big community around it. He's currently working on a new version caleld Dynamic Ceu, or dceu[2]

    In the same paradigm there is the Blech[3] language, I believe originating from Bosch. Sadly, that project also has lost some steam.

    [0] https://github.com/ceu-lang/ceu-arduino

    [1] http://ceu-lang.org/

    [2] https://github.com/fsantanna/dceu

    [3] https://github.com/blech-lang/blech

  • blech

    Blech is a language for developing reactive, real-time critical embedded software.

  • The reactivity and intuitive single-threaded concurrency makes it a really nice language for low-powered devices. Or robotics, which is a lot about reacting to sensor input.

    It has a dedicated Arduino repo too[1].

    In practice it's more of a research language by Francisco Sant’Anna, a professor at UERJ, Brazil, than a language with a big community around it. He's currently working on a new version caleld Dynamic Ceu, or dceu[2]

    In the same paradigm there is the Blech[3] language, I believe originating from Bosch. Sadly, that project also has lost some steam.

    [0] https://github.com/ceu-lang/ceu-arduino

    [1] http://ceu-lang.org/

    [2] https://github.com/fsantanna/dceu

    [3] https://github.com/blech-lang/blech

  • pros

    Source code for PROS kernel: open source C/C++ development for the VEX V5 microcontroller

  • Shameless plug: I work on [PROS](https://github.com/purduesigbots/pros), an open source programming environment for VEX. We've talked about adding coroutine support there, this article is an additional push for getting that done!

  • 2023RobotCode

  • In practice we actually do; I had to simplify for the article. We have a few utilities like a `runUntilDone` that make simple sequences easier to write. Example: https://github.com/frc-2175/2023RobotCode/blob/main/src/lua/...

    I suppose we could make more utilities for running coroutines "in parallel", but I haven't really felt the need. At that point we usually have to worry about exit conditions and it feels natural to just write a loop.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • BehaviorTree.CPP

    Behavior Trees Library in C++. Batteries included.

  • ferguson

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • ROS2 task/schedule/statemachine discussion

    1 project | /r/ROS | 29 Oct 2022
  • BehaviorTree.CPP: C++ behavior tree library, batteries included

    1 project | news.ycombinator.com | 5 Oct 2021
  • Vector 2.0 crash with error 914/915 on tutorial 06_face_image

    1 project | /r/AnkiVector | 15 Jun 2023
  • Break into CV with background in biological vision and neuroscience

    1 project | /r/computervision | 30 Dec 2022
  • Virtual environment frameworks

    1 project | /r/reinforcementlearning | 28 Dec 2022