mark-sweep
logos
mark-sweep | logos | |
---|---|---|
11 | 15 | |
702 | 2,627 | |
- | - | |
10.0 | 8.3 | |
almost 4 years ago | 26 days ago | |
C | Rust | |
GNU General Public License v3.0 or later | Apache License 2.0 |
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.
mark-sweep
-
Let's Write a Malloc
Never forget:
https://journal.stuffwithstuff.com/2013/12/08/babys-first-ga...
> Let me stress here that while this collector is simple, it isn’t a toy.
> There are a ton of optimizations you can build on top of this—in GCs and programming languages, optimization is 90% of the effort—but the core code here is a legitimate real GC.
> It’s very similar to the collectors that were in Ruby and Lua until recently.
> You can ship production code that uses something exactly like this.
> Now go build something awesome!
-
loxcraft: a compiler, language server, and online playground for the Lox programming language
Bob Nystrom also has a blog, and his articles are really well written (see his post on Pratt parsers / garbage collectors). I'd also recommend going through the source code for Wren, it shares a lot of code with Lox. Despite the deceptive simplicity of the implementation, it (like Lox) is incredibly fast - it's a great way to learn how to build production grade compilers in general.
-
The Garbage Collection Handbook, 2nd Edition
Bob Nystrom (of Game Programming Patterns, Crafting Interpreters, and dartfmt fame) also wrote a tutorial[1], of a precise as opposed to a conservative garbage collector.
Regarding register scanning, Andreas Kling has made (or at least quoted) an amusing observation[2] that your C runtime already has a primitive to dump all callee-save registers onto the stack: setjmp(). So all you have to do to scan registers is to put a jmp_buf onto the stack, setjmp() to it, then scan the stack normally starting from its address.
[1] https://journal.stuffwithstuff.com/2013/12/08/babys-first-ga...
[2] https://youtu.be/IzB6iTeo8kk
-
Ask HN: Do you recall any book or course that made a topic finally click?
- http://journal.stuffwithstuff.com/2013/12/08/babys-first-gar...
-
Garbage Collection with LLVM
Might not be that hard: https://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/
- Baby’s First Garbage Collector (2013)
-
Reference Count, Don't Garbage Collect
To better understand garbage collection, nothing better than implementation. This article is such a joy to read:
https://journal.stuffwithstuff.com/2013/12/08/babys-first-ga...
logos
-
Beating the fastest lexer generator in Rust
This is mighty impressive! I've been trying to get some motivation for the mythical rewrite of the proc macro in Logos, and this might just do it for me :D. I'll have a proper look later today and see if any of your findings have something that can be generalized. Also really surprised to see aarch64 doing better than x86_64 since the latter is what I've been optimizing for!
-
Letlang — Roadblocks and how to overcome them - My programming language targeting Rust
Rust is a very nice langage for implementing compilers, and has a nice ecosystem for it (logos, rust-peg, lalrpop, astmaker -- this one is mine --, etc...).
-
loxcraft: a compiler, language server, and online playground for the Lox programming language
rust-langdev has a lot of libraries for building compilers in Rust. Perhaps you could use these to make your implementation easier, and revisit it later if you want to build things from scratch. I'd suggest logos for lexing, LALRPOP / chumsky for parsing, and rust-gc for garbage collection.
-
Logos 0.13 released
Thanks! For compile times you might find the CLI version that Andrew Hickman contributed useful, it's undocumented still mostly I fear but shouldn't be hard to use, see original PR: https://github.com/maciejhirsz/logos/pull/248
-
Should I revisit my choice to use nom?
For my lexer generation purposes, I tend to use https://github.com/maciejhirsz/logos, as it not only generates an easy to use lazy lexer, but the result is also exceptionally fast!
-
Position in rowan
Hi, I'm using rowan to create a parser and want to print more useful error messages with position in the text/file. I'm using logos (https://crates.io/crates/logos) to generate the lexer. Is there a way to get the starting and ending positions of a SyntaxToken? If not I thought of adding my own wrapper struct around the SyntaxTokens.
-
Hey Rustaceans! Got a question? Ask here (6/2023)!
Is there a way for a lexer created with the logos crate (https://crates.io/crates/logos) to get the starting and ending positions for the tokens?
-
Best resources for a rust interpreter?
I wouldn't recommend Logos at this point. This recent bug is quite nasty and seems easy to hit, and the maintainer is unresponsive. Last commit was half a year ago. At this point I consider Logos abandonware, though it would be great if its development continued, or if it were forked.
-
Alternatives for "blazingly fast"
logos uses "ridiculously fast".
- Compiler in Rust
What are some alternatives?
c-examples - Example C code
foundation.rust-lang.org - website for Rust Foundation
zig.vim - Vim configuration for Zig
schema-registry - Confluent Schema Registry for Kafka
mmtk-core - Memory Management ToolKit
book - The Rust Programming Language
git-from-the-bottom-up - An introduction to the architecture and design of the Git content manager
lexgen - A fully-featured lexer generator, implemented as a proc macro
ixy-languages - A high-speed network driver written in C, Rust, C++, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python
sonyflake-rs - 🃏 A distributed unique ID generator inspired by Twitter's Snowflake.
rust-gc - Simple tracing (mark and sweep) garbage collector for Rust
hush - Hush is a unix shell based on the Lua programming language