zz
BorrowScript
zz | BorrowScript | |
---|---|---|
10 | 9 | |
1,604 | 1,432 | |
- | - | |
1.9 | 5.5 | |
almost 2 years ago | 6 months ago | |
Rust | HTML | |
MIT License | - |
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.
zz
- A "logical" compiler
-
Is it possible to have a superset of the C programming languages standard that is as safe as Rust?
There is this: https://github.com/zetzit/zz
-
ISO C became unusable for operating systems development
You're right that you can't define a safe subset of C without making it practical. MISRA C defines a C subset intended to help avoid C's footguns, but it still isn't actually a safe language. There are alternative approaches though:
1. Compile a safe language to C (whether a new language or an existing one)
2. Formal analysis of C, or of some practical subset of C, to prove the absence of undefined behaviour
Work has been done on both approaches.
ZZ compiles to C. [0] Dafny can compile to C++, but it seems that's not its primary target. [1][2]
There are several projects on formal analysis of C. [3][4][5][6]
[0] https://github.com/zetzit/zz
[1] https://github.com/dafny-lang/dafny
[2] https://dafny-lang.github.io/dafny/
[3] https://frama-c.com/
[4] https://www.microsoft.com/en-us/research/project/vcc-a-verif...
[5] https://www.eschertech.com/products/ecv.php
[6] https://trust-in-soft.com/
-
Foundations of Dawn: The Untyped Concatenative Calculus
Formal methods have been used successfully for decades; it's not just a pipe dream. Perfect software should ideally be something like ultra-low-defect software, though (that's the term the AdaCore folks use).
There are also other projects that aim to make formal software development much easier [0][1] and of course there's SPARK Ada.
[0] https://github.com/zetzit/zz
[1] https://github.com/dafny-lang/dafny
- ZetZ: A zymbolic verifier and tranzpiler to bare metal C Resources
-
Programming in Z3 by learning to think like a compiler
This post reminds me that I've been wanting to try out ZetZ[0]. It incorporates Z3 into a high-level programming language, and seems to do a lot of what the post talks about automatically.
[0] https://github.com/zetzit/zz
-
Grids in Rust, part 2: const generics
I still want to try the ZZ language (https://github.com/zetzit/zz) someday. It compiles to C, and uses a SMT solver to prove that you don't index out-of-bounds at compile time. But I don't like how it lacks generics, uses C idioms, and compiles to C.
-
Another technique to manage memory
The zz language uses a SMT solver to check for program soundness... I haven't tried it, but that's got to be more flexible and resource-hungry.
-
We are building a new systems programming language
Especially the fact that it outputs C code. So interop is seamless.
https://github.com/zetzit/zz
For any systems language, interop with C is the litmus test.
With that in mind, this new language should not require 15,000 lines of standard library. A type-safe wrapper for libc should be enough...
-
Does such a language already exist ("Rust--")?
You might find ZetZ interesting!
BorrowScript
- TypeScript Without Side Effects
-
Is it possible to have a superset of the C programming languages standard that is as safe as Rust?
You might be looking for something like https://github.com/alshdavid/BorrowScript
-
Why are systems languages always overly complex?
I think AssemblyScript is the best example.
Adding the borrow checker is quite invasive though. This guy is trying https://github.com/alshdavid/BorrowScript.
I think it's a kind of fun constraint that experienced and bored devs like to challenge themselves with - the borrow checker. The latest obsession. You absolutely don't need a borrow checker, just like you didn't need everything to be functional programming, but it's intellectually stimulating.
-
TypeScript as Fast as Rust: TypeScript++
Sounds like BorrowScript, which is TypeScript syntax, a Rust borrow checker, and Go-like coroutines. It's designed for wasm and web api targets. (not compatible with TypeScript though)
https://github.com/alshdavid/BorrowScript
-
High level overview of the algorithm steps of Rust's borrow checker?
I asked how to implement a "borrow checker" in JavaScript in my initial attempts (I've learned a decent amount since), which led me to randomly finding BorrowScript that seems to have another implementation I think, so going to be taking a deeper look there for inspiration as well. But if one could explain the steps of the algorithm, and how it integrates/relates with the type inference process, that would be of great use. Not for learning how to use Rust, but to learn how this aspect of its compiler works.
- Rust-inspired borrow checker, TypeScript-inspired syntax
- BorrowScript: TypeScript with a Borrow Checker
- BorrowScript (spec) β Combining the Rust borrow checker with TypeScript syntax
- BorrowScript spec β Combining the Rust borrow checker with TypeScript syntax
What are some alternatives?
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
cyclone - Cyclone is a type- and memory-safe dialect of C
checkedc - Checked C is an extension to C that lets programmers write C code that is guaranteed by the compiler to be type-safe. The goal is to let people easily make their existing C code type-safe and eliminate entire classes of errors. Checked C does not address use-after-free errors. This repo has a wiki for Checked C, sample code, the specification, and test code.
Mezzano - An operating system written in Common Lisp
angr - A powerful and user-friendly binary analysis platform!
lobster - The Lobster Programming Language
CrossHair - An analysis tool for Python that blurs the line between testing and type systems.
swc - Rust-based platform for the Web
micro-mitten - You might not need your garbage collector
ValueScript - A dialect of TypeScript with value semantics.
alive2 - Automatic verification of LLVM optimizations
DMDScript - An implementation of the ECMA 262 (Javascript) programming language