This timing additions to a language is also at the core of imperative synchronous programming languages like Este rel, Céu or Blech.
A way to implement coroutines in C is via protothreads. I admit that they are a bit hacky - but you can get quite far with them. I used them to implement an Esterel/Blech like environment:…
In `proto_activities` this blinking would look like this: pa_activity (Blinker, pa_ctx_tm(), uint32_t onMs, uint32_t offMs) { pa_repeat { turn_on_LED(); pa_delay_ms (onMs); turn_off_LED(); pa_delay_ms (offMs); } }…
A similar approach, but rooted in the idea of synchronous languages like Esterel or Blech: https://github.com/frameworklabs/proto_activities
Proto-Activities have this context to store the state in the caller. https://github.com/frameworklabs/proto_activities
Somewhat related to Fibres are the Trails of synchronous reactive programming languages. Both allow efficient logical concurrency based on cooperative scheduling. The nice thing with Trails is that the scheduling can be…
Drakon uses Silhouettes to show code linearly and abstracted at the same time: https://drakon.tech/read/silhouette
Right, imperative synchronous programming simplifies real time processing a lot. Somehow it does not get the attention it should, which is IMHO due to the fact that it is not available in common programming languages.…
The magic source of Contiki is IMHO the use of protothreads as a lightweight concurrency system. Protothreads can also be used to implement synchronous programming models - like this one:…
This paper: https://past.date-conference.com/proceedings-archive/2017/py... is on Sequentially Constructive Synchronous Concurrency which is also the base for the synchronous language Blech (https://www.blech-lang.org/)
This is a small project using Blech on an ESP-32 using PlatformIO: https://github.com/frameworklabs/ranger It doesn’t use Blechs newer module system though.
I created two „offsprings“ of Blech: 1. A C based lib using protothreads: https://github.com/frameworklabs/proto_activities 2. A Swift DSL: https://github.com/frameworklabs/Pappe I think the synchronous approach is…
Synchronous programming is also a good choice IMHO to handle multiple concurrent activities in a simple way on an embedded system. https://github.com/frameworklabs/proto_activities
I find synchronous languages like Esterel, Céu, or Blech both weird and eye opening. I created a DSL for Swift (called Pappe) to bring some of the ideas to a more mainstream language.
This timing additions to a language is also at the core of imperative synchronous programming languages like Este rel, Céu or Blech.
A way to implement coroutines in C is via protothreads. I admit that they are a bit hacky - but you can get quite far with them. I used them to implement an Esterel/Blech like environment:…
In `proto_activities` this blinking would look like this: pa_activity (Blinker, pa_ctx_tm(), uint32_t onMs, uint32_t offMs) { pa_repeat { turn_on_LED(); pa_delay_ms (onMs); turn_off_LED(); pa_delay_ms (offMs); } }…
A similar approach, but rooted in the idea of synchronous languages like Esterel or Blech: https://github.com/frameworklabs/proto_activities
Proto-Activities have this context to store the state in the caller. https://github.com/frameworklabs/proto_activities
Somewhat related to Fibres are the Trails of synchronous reactive programming languages. Both allow efficient logical concurrency based on cooperative scheduling. The nice thing with Trails is that the scheduling can be…
Drakon uses Silhouettes to show code linearly and abstracted at the same time: https://drakon.tech/read/silhouette
Right, imperative synchronous programming simplifies real time processing a lot. Somehow it does not get the attention it should, which is IMHO due to the fact that it is not available in common programming languages.…
The magic source of Contiki is IMHO the use of protothreads as a lightweight concurrency system. Protothreads can also be used to implement synchronous programming models - like this one:…
This paper: https://past.date-conference.com/proceedings-archive/2017/py... is on Sequentially Constructive Synchronous Concurrency which is also the base for the synchronous language Blech (https://www.blech-lang.org/)
This is a small project using Blech on an ESP-32 using PlatformIO: https://github.com/frameworklabs/ranger It doesn’t use Blechs newer module system though.
I created two „offsprings“ of Blech: 1. A C based lib using protothreads: https://github.com/frameworklabs/proto_activities 2. A Swift DSL: https://github.com/frameworklabs/Pappe I think the synchronous approach is…
Synchronous programming is also a good choice IMHO to handle multiple concurrent activities in a simple way on an embedded system. https://github.com/frameworklabs/proto_activities
I find synchronous languages like Esterel, Céu, or Blech both weird and eye opening. I created a DSL for Swift (called Pappe) to bring some of the ideas to a more mainstream language.