doyougnu · · engineering
add JS eDSL section
Josh refactored parts of the GHC.StgtoJS.Rts.Rts module to remove special cases
general case and allowing for a few simplifications to the module's code.
into a general case. Thus, simplifying the Rts module's code.
Extra caching, in the form of lookup `Array`s, was also introduced for names
such as `x1` would require allocation each use, first allocating a `String`,
which was then converted to a GHC `FastString`, and finally wrapped in a JS
AST data constructor. Now, the resulting AST can be looked up directly from
allocation _for each_ use: first by allocating a `String`, which was then
data constructor. Now, these names are captured in a static CAF'd `Array` and
each reference was replaced with a lookup to the corresponding slot in the
array. This avoids the extra allocations and ensures these names are shared.
For the full set of refactors, see:
inherited from GHCJS. This solves a [design
problem](https://gitlab.haskell.org/ghc/ghc/-/issues/22736). The existing DSL in
Backend's garbage collector, runtime system and other low level bits; (2) as a
target for optimizations; (3) as the source for code generation. This becomes
problematic because the existing DSL tries to do so much that it ends up not
being particularly good at (1), (2) and (3).
The fix is to separate concerns by writing a new DSL for (1). The DSL is Type
Safe and based on the [Sunroof
compiler](https://github.com/ku-fpg/sunroof-compiler) (Thanks Andy Gill et al.
for your labor!). Then, we'll compile the new DSL to the existing GHCJS DSL.
module, thus gaining type safety while still continuing other work. The end game
of this project is to eventually remove the GHCJS DSL entirely and then compile
our new DSL to a better intermediate representation that is explicitly crafted
to make optimizations easier.
### Blog posts
Adding Milkomeda Open Oracle dev guide
3815: Cleanup nix setup: remove unused cabal shell r=Unisay a=Unisay ### Overview This pull request cleans up our `flake.nix` configuration by * removing the unused `cabal-shell.nix` * making explicit which shell is created when doing `nix develop` (it's `….devShells.default`). ### Issue Number ADP-2447 Co-authored-by: Yura Lazarev <[email protected]>
fix CI not running on bors branches
5023: fix CI not running on bors branches r=disassembler a=dermetfan Looks like this was broken in #4930 as `prAndBorsIo` was added but not used. Also removed `nix` from the task name. I do not see what purpose it has and it makes the names unnecessarily long. Also we happen to need the old names in #5018. Co-authored-by: Robin Stumm <[email protected]>