Interesting things about fin:
- fin is like a modern C++ that is much simpler, way safer, and already has superb tooling (IDE, debugger, refactoring...).
- focuses on resource constrained embedded systems (no heap or garbage collector required).
- transpiles to high quality human readable C99 so we can use it with any microcontroller.
- has incredible testing/simulation capabilities (python like).
- familiar C/C++ syntax (be productive day 1).
- currently a work in progress.
- ...
- non-null references
- null analysis for pointers
- safer strings (also support c strings)
- safer arrays (also support c naked arrays)
- lightweight optional exceptions
- arithmetic overflow
- non-blocking assurances
- data thread safety
- selective safety escapes (for speed)
More info in video 2 or see pdf slides around slide 21.
If you prefer text over video, you can view the slides in pdf form. They lack some detail discussed in the video, but still have lots of info.
I've just uploaded a youtube playlist that details fin, a bunch of stuff related to testing C embedded projects, multiple controller simulations, and the challenges that fin helps us solve.
- 0:00 no replacing C
- 1:28 love C
- 2:28 goals
- 3:50 fin lang
- 4:46 experimental
- 6:04 readable C99
- 7:48 subset of C#
- 10:12 reasons for C#
- 14:06 awesome testing!
- 15:58 testing compared
- 20:04 python like
- 21:42 optional interfaces
- 23:56 generated c
- 25:08 choose 3
- 25:36 deploying fin
- 0:00 intro
- 0:30 features covered
- 1:30 no more headers!
- 2:28 no null checks needed by default
- 4:20 no pass by copy mistakes
- 6:47 null analysis
- 8:01 out parameters
- 10:08 multiple returns with tuples
- 11:38 named arguments
- 12:48 simple generics
- 16:50 safer strings
- 17:47 safer arrays
- 21:40 overflow
- 27:10 non-blocking assurance
- 29:58 critical section audits
- 31:02 data thread safety
- 32:14 safety escapes
- 33:30 optional lightweight exceptions
- 39:36 support code gen
- 41:30 portable de/serialization
- 42:53 modular and efficient code
- 0:00 intro
- 0:15 no bok choy!
- 0:50 Java to C
- 1:30 my history
- 4:18 AVR love
- 5:46 my mistake
- 7:02 lessons learned
- 8:57 the product
- 10:10 test without pcb
- 11:34 fake com interfaces
- 12:46 sim radio phy
- 16:38 sim debugging
- 18:48 sim fuzzing
- 20:56 c code
- 21:32 success
- 22:22 why not java?
- 0:00 intro
- 0:44 how to test
- 1:04 dual target
- 2:24 test benefits
- 3:48 example product
- 6:10 example diagram
- 6:50 types of tests
- 7:34 unit tests
- 9:32 integration tests
- 11:34 faking/mocking approaches
- 12:20 using linker
- 14:14 using func ptrs
- 16:08 dual target challenges
- 18:38 test accuracy
- 20:52 testing C chores
- 22:04 worth the pain
- 23:44 test code matters
- 27:42 fin stuff
- 29:10 single or multi?
- 32:06 flexible code costs
- 34:54 RAM free vtable
- 0:00 intro
- 0:56 why not C++?
- 2:06 poor C++ tooling
- 3:32 C++ multi project refactoring
- 7:18 best C++ IDE?
- 8:08 refactoring for wimps?
- 9:06 other langs?
- 10:44 compile to C benefits
- 0:00 intro
- 0:26 lose xyz?
- 0:50 how is this possible?
- 2:16 no heap?
- 3:02 using syntax
- 3:42 const?
- 5:32 volatile?
- 7:54 C# downsides
- 8:34 reduce verbosity
- 9:54 custom code fixes
- 11:26 our code fixes
- 12:04 fin costs
- 14:44 rough plan
- 16:46 can I do this?
- 17:38 you can help
The fin compiler isn't ready to share yet, but I do already transpile to C and js in StateSmith. I'm not too worried about the transpiling work.
What I'm looking for mostly right now is some feedback on the concept.
In the next couple weeks, I'll be adding proposals for syntax to use for stack allocating objects and other stuff. More videos too.
For the most part, I just wanted to get it out there and stop working by myself in a vacuum. Especially if there is a language I'm not aware of that already does what I'm planning.
YouTube playlist above has best info (pdf is pretty good too).