cakeml
checkedc
Our great sponsors
cakeml | checkedc | |
---|---|---|
14 | 21 | |
911 | 3,183 | |
2.0% | 0.6% | |
9.8 | 0.0 | |
4 days ago | over 1 year ago | |
Standard ML | C | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
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.
cakeml
-
The Deep Link Equating Math Proofs and Computer Programs
If I understand what you are asking about correctly, then I do think you are mistaken.
As a sibling comment observed, you would be proving something about a program, but proving things about programs is both possible and done.
This ranges from things like CakeML (https://cakeml.org/) and CompCert (compilers with verified correctness proofs of their optimizations) to something simple like absence of runtime type errors in statically strongly soundly-typed languages.
Of note is that you are proving properties of your program, not proving them perfect in every way. The properties of your program that you prove can vary wildly in both difficulty and usefulness. A sufficiently advanced formally verified compiler like CakeML can transfer a high-level proof about your source code to a corresponding proof about the behavior of the generated machine-executable code.
-
The future of Clang-based tooling
> A single IR with multiple passes is a good way to build a compiler
https://mlir.llvm.org/, which is using, is largely claiming the opposite. Most passes more naturally are not "a -> a", but "a -> b". data structures and data structures work hand in hand, it is very nice to produce "evidence" for what is done in the output data structure.
This is why https://cakeml.org/, which "can't cheat" with partial functions, has so many IRs!
Using just a single IR was historically done for cost-control, the idea being that having many IRs was a disaster in repetitive boilerplate. MLIR seeks to solve that exact problem!
-
old languages compilers
CakeML
-
Is there a formally-proven real-time language/computing env. or operating system?
There is also Cake ML which is a formally verified functional programming language compiler and runtime.
-
CakeML: A Verified Implementation of ML
There is also a CakeML -> Standard ML compiler though it seems to have been built to translate benchmarks and sort of old so I'm not sure how comprehensive it is: https://github.com/CakeML/cakeml/tree/master/unverified/front-end
-
The λ-Cube
> One guess is that lisps cope with being minimal through use of macros and metaprogramming, it's difficult for a typed language to support that level of metaprogramming while maintaining the various guarantees that one wants from such a system.
Difficult, but certainly not impossible [0].
-
Two Mechanisations of WebAssembly 1.0
If this interests you, I'd highly recommend checking out CompCert (docs here) and CakeML.
- Please critique Pancake, my first ever langdev project!
-
A Proven Correct C Compiler (Used by Airbus)
CakeML[0] is another formally verified compiler. Notably, unlike compcert, it is open source.
The language it implements (an sml dialect) is high-level and garbage collected, meaning that it is not usable in all of the same domains, but work is ongoing to reuse much of the compiler infrastructure for 'pancake', a low-level language.
checkedc
- The NSA list of memory-safe programming languages has been updated
-
The Fil-C Manifesto: Garbage In, Memory Safety Out
https://github.com/microsoft/checkedc
Also, one can combine subsets of C with FOSS, static analyzers that can handle those subsets. Then, compose only in ways that the tools can handle. Then, combinatorial and fuzz testing of the interface composition.
I know you’re doing the project for fun while exploring specific ways to achieve your goals. So, these are just some links and concepts that might help on your journey. Lots of folks don’t know about prior work in this area. So, I keep passing it on.
-
My Bad Habit of Hoarding Information
- [Checked C](https://github.com/microsoft/checkedc) - extensions to make C safer #cpp
- Checked C
- Is it possible to have a superset of the C programming languages standard that is as safe as Rust?
-
Azure CTO: “It's time to halt starting any new projects in C/C++ ”
Yes. Microsoft Research is working on "Checked C": https://www.microsoft.com/en-us/research/project/checked-c/
As a test, someone ported FreeBSD's networking stack to Checked C. It was easy and there was no overhead to performance and binary size.
-
I want to learn csharp man
Haha. I think they did ultimately agree. Thus a later research project is: Checked-C
-
ISO C became unusable for operating systems development
You may be interested by https://www.microsoft.com/en-us/research/project/checked-c/
- Might OpenBSD ever consider using a language like Zig?
What are some alternatives?
koka - Koka language compiler and interpreter
rust.ko - A minimal Linux kernel module written in rust.
manyclangs - Repository hosting unofficial binary pack files for many commits of LLVM
c2rust - Migrate C code to Rust
linux - Linux kernel source tree
wuffs - Wrangling Untrusted File Formats Safely
dafny - Dafny is a verification-aware programming language
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
rust - Empowering everyone to build reliable and efficient software.
Daikon - Dynamic detection of likely invariants
The-C-Programming-Language - Answers to exercises in K&R's The C Programming Language (second Edition).
zz - 🍺🐙 ZetZ a zymbolic verifier and tranzpiler to bare metal C