Supercompilation 1 is a program transformation technique that symbolically evaluates a given program, with run-time values as unknowns. In doing so, it discovers execution patterns of the original program and synthesizes them into standalone functions; the result of supercompilation is a more efficient residual program. In terms of transformational power, supercompilation subsumes both deforestati
December 15, 2023 This article was contributed by Ronja Koistinen The gccrs project is an ambitious effort started in 2014 to implement a Rust compiler within The GNU Compiler Collection (GCC). Even though the task is far from complete, progress has been made since LWN's previous coverage, according to reports from the project. Meanwhile, another hybrid and more mature approach to GCC Rust code ge
❧Frontmatter Dedication Acknowledgements I.Welcome 1.Introduction Design Note: What’s in a Name? 2.A Map of the Territory 3.The Lox Language Design Note: Expressions and Statements II.A Tree-Walk Interpreter 4.Scanning Design Note: Implicit Semicolons 5.Representing Code 6.Parsing Expressions Design Note: Logic Versus History 7.Evaluating Expressions Design Note: Static and Dynamic Typing 8.Statem
A toy compiler for a subset of JavaScript to ARM assembly, using Haskell. Published: May 29, 2022 I recently got a copy of the book Compiling to Assembly from Scratch by Vladamir Keleshev, which details how to write a compiler for a subset of JavaScript to 32-bit ARM assembly code. The choice to use ARM assembly is mainly for its simplicity in comparison to x86. Keleshev elects to use TypeScript t
Graydon Hoareが2019年にカナダのブリティッシュ・コロンビア大学でコンパイラ関連のゲスト講義した時の資料21 compilers and 3 orders of magnitude in 60 minutes - a wander through a weird landscape to the heart of compilationを読んだら大変面白かったのでメモ。 作者 Graydon HoareはMozillaでRustを開発したことで有名。その後Rustの開発もMozillaも離れて(というかRustの開発からは2013年に離れたようだ)、一時期AppleでSwift開発チームに所属していたらしい。(ソース:Reddit: I wonder, why Graydon Hoare, the author of Rust, stopped contributing in
Hello, and welcome to the MP2 Games tech blog! I’m Mathias, and this is the first entry in what will hopefully become a long series of technical deep dives into some of the work we do at MP2. Recently, we have been working on getting a large JavaScript game to run on game consoles. To make that happen, we made use of ChowJS, our ahead-of-time JavaScript compiler and runtime which can target game c
この記事では、私が Haskell コンパイラを Haskell で書いてみたいと思って勉強した事柄を紹介したいと思います。 Haskell は多くの特徴をもった高水準言語であるため、Haskell コンパイラが行わなければならない仕事はたくさんあります。 しかし、それらを一か所にまとめて述べた教科書のようなものは見当たらなかったので、 結構たくさんの文書を調べてまわる必要がありました。 ここで、それら全てについて詳しく解説するには、 紙幅も私の能力も足りませんが*1、 簡単な紹介と参考文献へのリンクを示しておけば、多少の価値はあるのではないかな…、あればいいな、 と期待しています。 コンパイラに限らず、そこそこの規模のプログラムを作ろうとする場合には、 最初のマイルストーンとなるようなサブ目標を決めるのが良いように思われます。 有名な Wnn における「私の名前は中村です」のようなやつ。
In this Github repository, I'm documenting my journey to write a self-compiling compiler for a subset of the C language. I'm also writing out the details so that, if you want to follow along, there will be an explanation of what I did, why, and with some references back to the theory of compilers. But not too much theory, I want this to be a practical journey. Here are the steps I've taken so far:
Make the web (development) faster. SWC (stands for Speedy Web Compiler) is a super-fast TypeScript / JavaScript compiler written in Rust. It's a library for Rust and JavaScript at the same time. If you are using SWC from Rust, see rustdoc and for most users, your entry point for using the library will be parser. Also, SWC tries to ensure that If you select the latest version of each crates, it wil
Note: 9cc is no longer an active project, and the successor is chibicc. 9cc is a successor of my 8cc C compiler. In this new project, I'm trying to write code that can be understood extremely easily while creating a compiler that generates reasonably efficient assembly. 9cc has more stages than 8cc. Here is an overview of the internals: Compiles an input string to abstract syntax trees. Runs a sem
Today we are thrilled to introduce ncc, a simple Node.js CLI program and API for compiling Node.js projects into a single JavaScript file. Inspired by native compiler toolchains, such as go, that export a static ELF binary file, ncc will output a self-contained script that bundles all its dependencies by leveraging webpack.
You are viewing archived content (2011-2018). For current research, visit research.colfax-intl.com This paper reports a performance-based comparison of six state-of-the-art C/C++ compilers: AOCC, Clang, G++, Intel C++ compiler, PGC++, and Zapcc. We measure two aspects of the compilers’ performance: The speed of compiled C/C++ code parallelized with OpenMP 4.x directives for multi-threading and vec
TeaVM: Build Fast, Modern Web Apps in Java A powerful tool for Java developers who want to develop web applications without the difficulties of a JavaScript development stack. Learn More What is TeaVM? TeaVM is an ahead-of-time compiler for Java bytecode that emits JavaScript and WebAssembly that runs in a browser. Its close relative is the well-known GWT. The main difference is that TeaVM does no
このシリーズの最初のパート (訳注:POSTDの翻訳記事へのリンクです) で簡単にBFソース言語を紹介し、最適化レベルが高まる4つのインタプリタについて述べました。実際にJITをいじる前に背景を知る上で役に立つと思います。 さらに背景を知る上で有効なのが、2013年に私が書いた『 JITの方法 – 入門編 』という記事です。ここでは、実行時に実行可能なx64機械コードの生成と実際にLinux上で実行するために必要な基本ツールについて説明しました。初めての方はまずこれらの記事を読んでください。 JITの2つの段階 以前 にも書きましたが、JIT手法を2段階に分けて考えると理解しやすいと思います。 プログラム実行時に機械コードを作成する。 作成した機械コードもプログラム実行時に実行する。 BF JITの第2段階は前記事で説明した方法と全く同じ内容です。詳細は jit_utils の JitPr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く