commit 9676ff668022503f03554c572700a255c2d1d096 Author: Glen Whitney Date: Wed Aug 21 15:54:55 2024 +0000 Add Home diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..fb8fadf --- /dev/null +++ b/Home.md @@ -0,0 +1,9 @@ +### Husht + +This project aims to fill a niche for Rust broadly along the lines of CoffeeScript for JavaScript or Civet for TypeScript: provide all the resources and power of the Rust language via a clean, non-redundant, significant-whitespace syntax. Husht will be just Rust, but quieter. As such, the project is not looking to gratuitously alter syntax, but instead, to do things in a Rust-y way, while allowing less typing and less "line noise" in a source file. + +#### Implementation plan +Here are some key ideas of how the plan will be accomplished. +* The Husht syntax engine will be two-way: it should be able both to convert Husht syntax to fully correct Rust, but also take a Rust file and produce a Husht file with the same semantics. The Rust -> Husht -> Rust roundtrip should be basically equivalent to running `rustfmt` on the original file. +* Implementation will start with Husht == Rust, and use the tree-sitter grammar for Rust to produce tree-sitter parse trees for "Husht" (=Rust) code, which will be transformed into essentially the same trees as rustc_parse would produce (in Rust's own ast structure), and then use the rustfmt code generator to produce Rust code. In the other direction, we will use rustc_parse itself, and likely use algorithms from the prettyplease pretty printer to convert that to a tree-sitter concrete syntax tree, from which it is of course easy to generate "Husht" code. +* Once that roundtrip is working, we will fork and diverge the Husht tree-sitter parse from its starting point identical to the Rust tree-sitter parser, to implement the syntax that will make Husht a pleasure to use.