rustc-dev-guide
astexplorer
rustc-dev-guide | astexplorer | |
---|---|---|
7 | 43 | |
1,579 | 5,953 | |
1.3% | - | |
9.3 | 6.0 | |
9 days ago | 8 days ago | |
HTML | JavaScript | |
Apache License 2.0 | 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.
rustc-dev-guide
-
The rust project has a burnout problem
yes, it's possible! that list doesn't exist today but i would love to create it. i wrote a draft a few years ago before shifting to other work; someone recently expressed interest in reviving that project: https://github.com/rust-lang/rustc-dev-guide/pull/1463
<3 i'm glad you enjoyed it
-
How Rust transforms into Machine Code.
It's possible - you could open an issue on the rustc-dev-guide repo if you'd like. https://github.com/rust-lang/rustc-dev-guide/
-
Accessible Documentation?
I'm very confident that this would be well received! I'm not sure where the source code for rustdoc lives, but I know that the internals getting started guide is here: https://github.com/rust-lang/rustc-dev-guide/blob/master/src/rustdoc.md. That would be a good place to start if you're looking into how the HTML is generated.
-
Yet another command line argument parser: bpaf 0.5.5
Do you have links to any good info about how much rustc reuses from previous runs? This is the first time i hear about reuse at the function level. I guess the rustc-dev-guide would be a good place for me to start?
-
Discussion Thread
Inspired by the rust compiler, you could represent the entire state of the application as a graph of operations with inputs and outputs. You can hash all the inputs and use that to memoize the operations, so that you don't have to repeat them, you can cache them in memory or on disk, and it helps you track which parts of the app state actually change between user operations and you can then be sure you put all the changes in the undo/redo stack, and so that you don't have to store duplicate copies of things that don't change. (How's that for a run-on sentence?) You could run a general binary diff algorithm between subsequent versions of the same operation with different inputs to try to reduce the memory used by storing the different versions, and have specialized diff algorithms for specific types of data. (How do you identify related operations? How much CPU does this use?) You can have a background task that compresses older versions with LZ4 or zstd. You can have a background task that saves older versions on-disk when there's memory pressure.
-
What’s everyone working on this week (11/2022)?
I contributed a couple small bugfixes for issues I ran into along the way as well. 1, 2
-
Best practices for writing code comments
It's rustdoc: https://github.com/rust-lang/rustc-dev-guide/blob/master/src...
> Rustdoc actually uses the rustc internals directly. It lives in-tree with the compiler and standard library. This chapter is about how it works. For information about Rustdoc's features and how to use them, see the Rustdoc book. For more details about how rustdoc works, see the "Rustdoc internals" chapter.
astexplorer
-
Understanding Code Structure: A Beginner's Guide to Tree-sitter
You can play with your code here, and visualise ASTs for the same.
-
What is an Abstract Syntax Tree in Programming?
Website
-
How to create your own Eslint rule with tests, boosting the DX, and code-review
To understand this syntax, I recommend exploring AST Explorer. You will have a better view of how the AST of JavaScript works and how to correlate it with the Eslint syntaxy:
-
Programming from Top to Bottom - Parsing
You can never mistake type_declaration with an identifier, otherwise the program will not work. Aside from that constraint, you are free to name them whatever you like, there is no one standard, and each parser has it own naming conventions, unless you are planning to use something like LLVM. If you are interested, you can see examples of naming in different language parsers in the AST Explorer.
-
ESLint: under the hood
The rule that I want to write will be called not-allows-underscore: the idea is to abolish the use of underscores when declaring variables or functions. It's a real dummy rule, but it should be enough to see in action the concepts that we have discussed earlier. The first thing that I would do is to go to AST Explorer, write down a code that declares variables and functions (both standard and arrows one) and take a look at what type of node is the one that encodes the identifier. Doing that, I found out that the node type of my interest is Identifier, what a surprise! 🤣. In particular, the structure of the node holds the string used as identifier in the name property.
-
😱 ESlint over Conventions - You have Not unlocked the power of ESlint 😱
All the information about the API, AST node names, AST Explorer, etc. you can read in the official documentation. I’m just going to show examples of how to automate the check-up of our created conventions.
- AST Exploret
-
200 Web-Based, Must-Try Web Design and Development Tools
AST Viewer
-
Building a JSON Parser from scratch with JS 🤯
If you want to see how the AST of popular languages looks, I recommend the AST Explorer. It supports various languages, and you can view the complete AST and navigate through the nodes. If you want to go further, you can try to copy some logic from an existing parser and implement it in your own, such as calculating an expression according to precedence order, for example: 1 + 2 * 3 (which is 7, not 9).
-
Creating my own typescript compiler
https://astexplorer.net/ is a good resource/playground for understanding ASTs and transpilers.
What are some alternatives?
lang-team - Home of the Rust lang team
deno_swc - The SWC compiler for Deno.
bpaf - Command line parser with applicative interface
gogocode - GoGoCode is a transformer for JavaScript/Typescript/HTML based on AST but providing a more intuitive API.
sensible-env-logger - A pretty, sensible, easy-to-use logger for Rust.
vscode-language-tree - VSCode tree format support
triagebot - Automation/tooling for Rust spaces
ChakraCore - ChakraCore is an open source Javascript engine with a C API.
isahc - The practical HTTP client that is fun to use.
Acorn - A small, fast, JavaScript-based JavaScript parser
MuOxi - MuOxi, a modern mud game engine written in Rust.
proposal-type-annotations - ECMAScript proposal for type syntax that is erased - Stage 1