From b0ccdc3864ea4ed748bb1092394581f7ae29067d Mon Sep 17 00:00:00 2001 From: Juan Bono Date: Fri, 5 Jan 2024 19:18:29 +0000 Subject: [PATCH] Add similarities and differences from Rust section --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c9ecd96..2c8f6f7 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Programs are about transforming data into other forms of data. Code is about exp #### Second level features - Type inference only within blocks, not in function signatures - Algebraic Data Types -- Typeclasses +- Traits and Generics - REPL for connecting to running services and for quick iteration - Compile to MLIR, WASM and generate C code - Implemented in Rust @@ -72,7 +72,6 @@ Programs are about transforming data into other forms of data. Code is about exp ### Anti-features - No hidden memory allocation - No garbage collection or destructors -- No runtime running by default - No hidden control flow or implicit function call - No global state - No exceptions @@ -87,13 +86,24 @@ Programs are about transforming data into other forms of data. Code is about exp - No variable shadowing - No Java-style @Annotations - No undefined behavior +- No marker traits like Send, Sync for concurrency. The runtime will take care of that. ### Features that are being debated - Integer type that overflows to bignum - Missing decimal FP. Needed for financial math -- Zig's comptime - Check [Fearless FFI](https://verdagon.dev/blog/fearless-ffi) +### Differences with Rust + +Concrete take many features from Rust like: +- Traits and generics +- Similar language but we aim to make it simpler + +But we want to take a different path with respect to: +- Concurrency. We provide a default runtime with green threads. There is no support for low-level primitives like atomics, mutex and OS threads. +- There is no Sync and Send traits +- Simpler borrow checker +- No lifetimes ## Syntax