zig
rust
zig | rust | |
---|---|---|
855 | 7 | |
36,516 | 754 | |
3.7% | 1.5% | |
10.0 | 0.0 | |
4 days ago | 10 days ago | |
Zig | Rust | |
MIT License | 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.
zig
-
Development Environment Configuration
Programming Languages: Go, Rust, Zig
-
TIL: Ghostty — a new and quite promising terminal emulator
At the same time, in the internal Slack of the company I work for, my colleague asked the security team whether we have any policies about the apps, as they'd like to start using Ghostty as their terminal emulator. I took a look at it, and it immediately caught my attention: a fresh look, a zero-config setup, platform-native UI (discovered in details in the “Ghostty Is Native—So What?” post by Gregory Anders) and GPU acceleration, and FOSS with very permissive MIT license (here is the GitHub repo). I googled the author (Mitchell Hashimoto), and discovered that he is a co-founder of HashiCorp, that brought Terraform, Vargant, Consult, Vault, and others to the world. That's quite a list. And, last but not the least, Zig as the main programming language was an interesting factor as well.
-
C++ or Rust? I'd stick to my good old C++
I'm not sure which language will be more mainstream in the future between these two. Maybe Zig(https://ziglang.org) can be some contender in the future, but not now at least - it could be a good contender at least it shows OOP grammar as simple as Python, internalizing vtable. For C++ and Rust, at least for me Rust is more like "you MUST do this" while C++ is like "you CAN do it also in this way." While one is highly opinionated, the other is unopinionated at all(that is to say, at least for me. your opinions are always welcome). And that may be one of the reasons that I don't like Qt? :D Maybe C++ is still superset of Rust in some way (it's just "in some way", because there are things unique in Rust language itself. For example, Rust trait can be mimicked with template class and combination of C++ enum and template class can behave like class-associated Rust enum, but C++ doesn't have anything equivalent or similar to borrow checker).
-
Flattening ASTs (and Other Compiler Data Structures)
Zig compiler pipeline (AST, Zir, Air, Sema) does exactly this on all layers. Not only contiguous, but instead of array-of-structs it is struct-of-arrays, so walking the tree is even more cache friendly. For AST see: https://github.com/ziglang/zig/blob/master/lib/std/zig/Ast.z...
-
I Wrote a Game Boy Advance Game in Zig
Yes, please read the comment linked at the issue description: https://github.com/ziglang/zig/issues/16270#issuecomment-161...
-
When Zig Is Safer and Faster Than Rust
A few notes:
1) Lack of a garbage collector does not make your program faster, it makes the performance more easily predictable in terms of latency.
It also makes it more friendly for memory bandwidth, CPU cache and to overall memory usage, which in turn results in better performance in real-case scenarios vs synthetic/toy benchmarks. This is particularly noticeable in constrained environments (like embedded systems).
2) Zig was never about memory safety, and it is not a memory-safe language.
It might have better plumbing than C, it might add better way to implement and abstract concepts.. but so does C++, for instance.
The more striking differences between C++ and Zig, IMHO, are syntax and the ability to use the same language instead of a separate one to do meta-programming (templates vs comptime).
3) Aliasing enforcement in Rust is there for a reason.
Two examples I quickly found on Zig's issue tracker:
https://github.com/ziglang/zig/issues/3696
-
Enum of Arrays
I'll tell you my experience with Zig. I don't have any. I saw maybe Primagen talking about it and I see your post here. I watched 10 minutes of your vimeo video. I see it has 30k+ stars on github. So now I have to try to understand it in a nutshell.
First like any language, I go to indeed.com and put in "Zig" to see if there are any jobs listed which use it. I don't see any.
Then I click to https://ziglang.org/ and it describes Zig as "robust, optimal and reusable". Well that doesn't really say much of anything.
I read the example listed, which appears to be a test case, and I wonder how the 'try' mechanism works without a 'catch'
Then I go to https://ziglang.org/documentation/master/ and see that it says:
- Zon – object notation like JSON in Zig
- Linux Syscall Support
-
Zig is everything I want C to be
> will that function also get to return a u8?
No, the main function (the entry point of the entire program) is special cased. Have a look at the source code. There you can see the it's calling the user defined main function and handling its return value / error.
https://github.com/ziglang/zig/blob/2d888a8e639856e8cb6e4c6f...
> Also, what happened to argv/argc?
You can access argv with std.os.argv which is a slice of null terminated strings. It's better to go with std.process.argsAlloc though (requires an allocation but works on all supported platforms).
rust
-
ESP32 example project
The esp-template issue might be this one: https://github.com/esp-rs/rust/issues/158. Try with --release or updating to 1.68.0 with espup update. I'll take a look at the log as soon as I can, atm Im on the phone and is not that easy to scroll through :(
-
Are there any Rust forks out there?
Sure. Espressif maintains a fork which adds support for their microcontrollers.
-
Would it be possible to compile openssl-sys for esp32
I am trying to make a vaccine passport validation for my country using the ESP32 for my micro controller. I have gotten the std rust library to compile using (esp-rs)[https://github.com/esp-rs/rust], but the actual validation library that I use needs openssl which refuses to compile.
-
Are there situations where it's better to use C++?
Xtensa. They've got a fork of LLVM that supports it that they're working toward getting upstreamed. The community has a fork of rustc that uses it (and a quickstart crate) while we wait for it to get upstreamed.
- Rust-Xtensa: Rust for Xtensa Processors. Built in Targets for the ESP32/ESP8266
-
Multi-use kernel written in Rust
It only works if you have an Xtensa compiler which takes hours to compile, here: Rust Xtensa (if you don't have it). The network driver is just a function that sets the name of the driver so the Esp32 does something other that blinking.
- Could IOTA transaction be started solely from the IoT capable device (like esp32)?
What are some alternatives?
Odin - Odin Programming Language
Elixir - Elixir is a dynamic, functional language for building scalable and maintainable applications
v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
odbc-api - ODBC (Open Database Connectivity) bindings for Rust.
ssr-proxy-js - A Server-Side Rendering Proxy focused on customization and flexibility!
scala - Scala 2 compiler and standard library. Scala 2 bugs at https://github.com/scala/bug; Scala 3 at https://github.com/scala/scala3
Nim - Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
avr-hal - embedded-hal abstractions for AVR microcontrollers
go - The Go programming language
dafny - Dafny is a verification-aware programming language
rust - Empowering everyone to build reliable and efficient software.
regex - An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.