> The RTFM language was created ... to develop real time systems for which FreeRTOS didn’t fit the bill. I'm curious how they determined FreeRTOS wasn't appropriate for their use cases?
Fearless concurrency in your microcontroller
41–50 of 52 posts
Re: Fearless concurrency in your microcontroller
#42That's a very nice use of Rust's safety. This tasking model is a common way to write programs for very small machines, but with this, it's safe. People have a very hard time getting all that priority-level adjustment right. It's not concurrency, though. It's asynchrony. Two things never happen at at the same time. Modula I for the PDP-11 did do all this in 1979. In addition, it computed the worst-case stack for each…
Re: Fearless concurrency in your microcontroller
#43Neat to see given I submitted RTFM-core recently: https://news.ycombinator.com/item?id=14294408 So, the author learned from it, ported it to a safer language, and release the results. Although Ada/SPARK Ravenscar did embedded concurrency, the author certainly builds on modern methods for achieving similar (possibly better) results in Internet of Things. Good work. :)
Re: Fearless concurrency in your microcontroller
#44Earlier quoted context omitted.
No offense, but nobody in their right mind is going to use any of this in a production environment. For instance, what will your hypersonic rocket do while garbage collection is running instead of it's real-time control loops?
I guess the French and US military using Aonix real time JVMs for weapons control and monitoring are the right set of persons to answer your question. Also some military think memory leaks are irrelevant on missiles, given the ultimate garbage collector.
All in all I'd rank it 'easier' than C in developer comfort and proficiency but frankly, if you don't do C, I'd just go directly to Ada...
Re: Fearless concurrency in your microcontroller
#45Earlier quoted context omitted.
It's called real-time, garbage collection. It occurs predictably on regular intervals before enough leaks happen to blow missiles up or whatever other tragedy. Aonix and some other vendors have had it for a long time now. Meanwhile, mainstream found out in the past, few years that Go could achieve "low-latency" garbage collection. The field can do more than many of them think given the countless person-years invested…
Seems AdaCore is working to add some form of borrow-checker to Spark :-) https://cps-vo.org/node/34575
I do like them splitting it into several levels, though. That worked under Orange Book for security.
Re: Fearless concurrency in your microcontroller
#46Earlier quoted context omitted.
I guess the French and US military using Aonix real time JVMs for weapons control and monitoring are the right set of persons to answer your question. Also some military think memory leaks are irrelevant on missiles, given the ultimate garbage collector.
Well it all depends how 'hard' your real-time is. If you go with Atego/aonix, you can get down to almost-C-Ada-like latencies but be ready to change your java coding style. Sliced-time GC works OK until you put too much pressure on it (concatenating logging strings that you're not going to record or display... allocating tons of small objets for local uses... Programming in 'Classic' java...) and it can't clean up fa…
I would just argue that un these domains 'Classical C' isn't used, given the constraints regarding language features, using stuff like MISRA-C and similar.
Fully agree with Ada comment, even better if using SPARK.
In any case, many military seem more focused on being easy to hire recruits that already know how to program than training them, hence the ramping up of Java adoption.
Re: Fearless concurrency in your microcontroller
#47Earlier quoted context omitted.
Seems AdaCore is working to add some form of borrow-checker to Spark :-) https://cps-vo.org/node/34575
I don't see anything about safety for dynamic, memory management in that link. It just talks about correctness. I'm specifically wanting affine types and ownership system that let SPARK go from static to dynamic. I do like them splitting it into several levels, though. That worked under Orange Book for security.
https://forge.open-do.org/plugins/moinmoin/parasail/FrontPag...
Re: Fearless concurrency in your microcontroller
#48Earlier quoted context omitted.
Seems AdaCore is working to add some form of borrow-checker to Spark :-) https://cps-vo.org/node/34575
I don't see anything about safety for dynamic, memory management in that link. It just talks about correctness. I'm specifically wanting affine types and ownership system that let SPARK go from static to dynamic. I do like them splitting it into several levels, though. That worked under Orange Book for security.
Re: Fearless concurrency in your microcontroller
#49Earlier quoted context omitted.
Well it all depends how 'hard' your real-time is. If you go with Atego/aonix, you can get down to almost-C-Ada-like latencies but be ready to change your java coding style. Sliced-time GC works OK until you put too much pressure on it (concatenating logging strings that you're not going to record or display... allocating tons of small objets for local uses... Programming in 'Classic' java...) and it can't clean up fa…
Thanks for telling your Aonix experience. I would just argue that un these domains 'Classical C' isn't used, given the constraints regarding language features, using stuff like MISRA-C and similar. Fully agree with Ada comment, even better if using SPARK. In any case, many military seem more focused on being easy to hire recruits that already know how to program than training them, hence the ramping up of Java adopti…
You're right about Misra C. Even with Ada you'll end up banning dynamic memory allocation and some stack-exploding stuff, but you still have alternatives like storage pools ('looks-like-dynamic' memory allocation) and Controlled types, and at least you get a stack for structured data types and not just for primitive types...
Re: Fearless concurrency in your microcontroller
#50Earlier quoted context omitted.
It's called real-time, garbage collection. It occurs predictably on regular intervals before enough leaks happen to blow missiles up or whatever other tragedy. Aonix and some other vendors have had it for a long time now. Meanwhile, mainstream found out in the past, few years that Go could achieve "low-latency" garbage collection. The field can do more than many of them think given the countless person-years invested…
Seems AdaCore is working to add some form of borrow-checker to Spark :-) https://cps-vo.org/node/34575
https://groups.google.com/d/msg/comp.lang.ada/H35QcYiWR1Y/jJ...
It seems they're adding a little bit of it for SPARK but not critical, dynamic part. I asked him at the end if they plan to go full, dynamic safety for full Ada if the SPARK experiment succeeds. Awaiting the reply.