並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 84件

新着順 人気順

Compilerの検索結果1 - 40 件 / 84件

  • TypeScript 本体のコードを読んでみよう

    みんなお世話になっている TypeScript のコードを読みたいと思ったことはないだろうか。読んだ。 一週間ぐらいかかった。完全に読み切ったとは言えないが、概要は掴んだ。 なかなかに複雑でドメイン知識を得るのが難しかったので、これから読む人向けに、登場人物や概念を整理して紹介したい。 読んだのは 2023/6/8 時点で git clone したコード。 最初に: 自分のゴール設定 複数ファイルにまたがった参照を、 TypeScript の Language Service が提供する findReferences() や findRenameLocations(), goToDefinitions() を使って、インクリメンタルに書き換えたかった。 Terser を使うと、今触ってるオブジェクトが何で、何のメンバを書き換えたかの情報が残らない。これを TypeScript のレイヤーで

      TypeScript 本体のコードを読んでみよう
    • PlayStation Programming with MIPS Assembly and C

      This course is a deep dive into the world of PlayStation programming! We'll explore the PS1 hardware, understand its sub-components, and learn how to code games using MIPS assembler & the C programming language. We'll also learn how to use a PS1 SDK library paired with a modern development toolchain to be more productive and push fast polygons out of our console. We are about to enter the 5th gene

        PlayStation Programming with MIPS Assembly and C
      • Ichigo Lispコンパイラ完全解説

        Ichigo Lispコンパイラ完全解説 はじめに この記事では私がWebAssemblyで書いた Ichigo Lispという LISP 1.5実装のコンパイラのソースコードをすべて解説する。 というのも、最近とあるコンパイラの本を読んで 「説明が特定の実装に基づいてる割にそのソースが一部しか載ってない」 という不満を感じたのだが、自分で書いたコンパイラの記事 を読み返してみると、コンパイラのソースコードが一切出てこないことに気づいた。 こんな記事を書きながらよく人様の本に不満を持てたものだと 瀬戸内海より深く反省したので、 ここにIchigo Lispのコンパイラのすべてのソースコードを解説する。 想定読者とか Ichigo Lispのコンパイラは(ほとんど)すべてLISP 1.5で書かれている。 LISP 1.5特有のややこしい機能などは使っていないので、 Common Lisp、S

        • 「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”

          Blue Whale Systems株式会社の植山類氏は、「LLVM lld」「mold」が解決したプログラムのビルドの問題を例に、“大きな問題”を解決することについて話しました。全3回。 1個の本質的な問題を解いてしまうほうが細かいことを考えるよりも簡単 植山類氏:では始めます。本日、機会をいただいて講演をすることになった植山と申します。この講演の内容は「大きな問題のほうが小さな問題より解くのは簡単だ」というタイトルです。 どういう趣旨かというと、常に簡単だというわけではないのですが、いろいろな場面で、1個の本質的な問題をドッカンと解いてしまうほうが、いろいろな細かいことを考えるよりも簡単なことが多いという話です。 そういうソリューションが往々にして見逃されがちということがけっこうあって、そういうことにどうやって挑戦していくのかという気持ちの話を、僕がそういう大きな問題を解決した経験を踏

            「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”
          • Goコンパイラのお勉強(3)~配列の効率的な操作に関する最適化~ - Techtouch Developers Blog

            はじめに string と byte のキャスト最適化 1. map のキー指定のためのキャスト 2. string を byte 毎に処理するためのキャスト 3. 比較のためのキャスト memclr による配列ゼロクリア最適化 ガベージコレクションのマークスキャン回避 おわりに 参考文献 はじめに SRE の izzii (𝕏: @ahneahneahne) です。今回をもって「Go コンパイラのお勉強」と題した連載ブログが完結です!仕事の話とは直接関係がないネタだったので、書く内容に悩むということはなく気持ちよくかけました。さて、今回は「配列の効率的な利用」と題して golang/go CompilerOptimizations で扱われている残り物の紹介をしていきます笑 残り物とは言っても知ると知らないとでは Go コードの読み方が変わるかと思いますので、ぜひ! [第 1 回] G

              Goコンパイラのお勉強(3)~配列の効率的な操作に関する最適化~ - Techtouch Developers Blog
            • Goコンパイラのお勉強(2)~高階関数のためのインライン展開とエスケープ解析~ - Techtouch Developers Blog

              はじめに インライン展開 インライン展開とは 高階関数のパフォーマンスが落ちる例 インライン展開の制約 エスケープ解析 エスケープ解析とは 高階関数のパフォーマンスが落ちる例 さいごに 参考文献 はじめに 先々月にも Go コンパイラの最適化に関するブログ記事を書いたのですが、多くのブックマークを頂けて感謝です! SRE の izzii です。 github.com 上のドキュメントを参考にしつつ Go コンパイラの最適化に関する記事を連載していきます。本記事は 2 本目です。 [第 1 回] Goコンパイラのお勉強(1)~ゼロ幅の型によるメモリ利用の最適化と未定義動作~ [本記事] Goコンパイラのお勉強(2)~高階関数のためのインライン展開とエスケープ解析~ [第 3 回] Goコンパイラのお勉強(3)~配列の効率的な操作に関する最適化~ 文字数の関係でタイトルでは高階関数という言葉を

                Goコンパイラのお勉強(2)~高階関数のためのインライン展開とエスケープ解析~ - Techtouch Developers Blog
              • Intelが特定ベンチマークのスコアを最大9%水増しする不正をしていたとして2600件以上のベンチマーク結果が事実上無効に

                性能テストの標準化団体の1つで、公平なベンチマークを行うために設立された非営利組織・SPECが、「Intelが自社プロセッサのベンチマーク結果を水増しするために特定のベンチマークのスコアを向上させるような最適化を行い、スコアを最大で9%水増ししていた」として、Intelプロセッサのベンチマーク結果2600件以上を事実上無効化しました。 Targeted Intel oneAPI DPC++ Compiler Optimization Rules Out 2k+ SPEC CPU Submissions - Phoronix https://www.phoronix.com/news/oneAPI-DPC-Compiler-Cheat-SPEC Impact of Intel Compiler Optimizations on SPEC CPU2017 Example https://www

                  Intelが特定ベンチマークのスコアを最大9%水増しする不正をしていたとして2600件以上のベンチマーク結果が事実上無効に
                • Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング

                  この記事は、Merpay Tech Openness Month 2023 の2日目の記事です。 メルペイFrontendエンジニアの@togami2864です。普段はPartner Platformというチームで加盟店申込みフォームや審査・管理を行うためのMerchant Supportツールの開発・運用を担当しています。 本記事ではRust製TypeScriptコンパイラであるstcについて筆者の観測範囲での概要、開発状況、課題等を紹介します。なお、内容は全て2023年5月時点のものです。また、本記事の一部は Node学園 41時限目 書籍について で発表したものと重複していることをご了承ください。 概要 stcは2022年10月にオープンソース化されたRust製のTypeScriptコンパイラです。 https://github.com/dudykr/stc 製作者はRust製のトラ

                    Rust製TypeScriptコンパイラstcの現状と今後 | メルカリエンジニアリング
                  • Writing a C compiler in 500 lines of Python

                    A few months ago, I set myself the challenge of writing a C compiler in 500 lines of Python1, after writing my SDF donut post. How hard could it be? The answer was, pretty hard, even when dropping quite a few features. But it was also pretty interesting, and the result is surprisingly functional and not too hard to understand! There's too much code for me to comprehensively cover in a single blog

                    • The Development of the C Language

                      The Development of the C Language* Dennis M. Ritchie Bell Labs/Lucent Technologies Murray Hill, NJ 07974 USA dmr@bell-labs.com ABSTRACT The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system. Derived from the typeless language BCPL, it evolved a type structure; created on a tiny machine as a tool to improve a meager progr

                      • Rustで作る!自作言語・コンパイラ入門:学園生活研究部

                        Rustで自作言語とコンパイラを作るために必要な知識と実装手法を初心者向けに簡単に説明することを試みました。パーサコンビネータやLLVM関連のライブラリを利用し、Rustで自作言語やコンパイラ作りをやっていきます。

                          Rustで作る!自作言語・コンパイラ入門:学園生活研究部
                        • Python 3.13 gets a JIT

                          Happy New Year everyone! In late December 2023 (Christmas Day to be precise), CPython core developer Brandt Bucher submitted a little pull-request to the Python 3.13 branch adding a JIT compiler. This change, once accepted would be one of the biggest changes to the CPython Interpreter since the Specializing Adaptive Interpreter added in Python 3.11 (which was also from Brandt along with Mark Shann

                            Python 3.13 gets a JIT
                          • TypeScript Compiler APIを活用してi18nの不整合をチェックする - Commune Engineer Blog

                            こんにちは。業務委託としてコミューンのグローバルチームでエンジニアをしているhiro08と申します。 グローバルチームでは主に海外展開に向けた開発や施策を行なっています。もし、グローバルチームに興味のある方は日本のSaaSスタートアップが世界で戦うためのプロダクトを開発するということも一読ください。 今回はグローバルチームでの開発の一部として、TypeScript Compiler APIを活用したi18nの不整合をチェックするツールを作成したお話をしようと思います。 背景 海外展開に向けた開発でまず思いつくのがi18n (多言語化) 対応ではないでしょうか。コミューンのプロダクトではi18nの対応が完了しており、すでに運用フェーズに入っています。 しかし、運用していく中で対訳データのキーやネームスペースの不整合に気づく仕組みがないことが課題点として挙がってきました。 i18nでは、ネーム

                              TypeScript Compiler APIを活用してi18nの不整合をチェックする - Commune Engineer Blog
                            • GitHub - CDSoft/luax: luax is a Lua interpreter and REPL based on Lua 5.4, augmented with some useful packages. It is also a "compiler" that produces standalone executables from Lua scripts.

                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                GitHub - CDSoft/luax: luax is a Lua interpreter and REPL based on Lua 5.4, augmented with some useful packages. It is also a "compiler" that produces standalone executables from Lua scripts.
                              • An Introduction to Interpreters and JIT Compilation

                                Last week, I gave two lectures at the Programming Language Implementation Summer School (PLISS). PLISS was very well organized and the students and other presenters made for a very enjoyable week of new ideas, learning, and discussing. For my own lectures, I decided to take an approach that focused more on the high-level ideas and can introduce a wider audience to how we build interpreters and a r

                                • Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき

                                  前回のあらすじ Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき RubyKaigiにいってきました。スライドや登壇時の動画は以下のリンクから参照できます。ぜひご覧ください。 rubykaigi.org parse.y リファクタリングチャレンジ "parse.y"を読んでいる時にrb_obj_hideやrb_builtin_class_name、RB_OBJ_WRITTENといった関数やマクロが出てきて驚いたことのある人は少なくないでしょう。RubyのparserではGCやRubyのObjectなどRuby本体の機能が多く使われています。それらはRubyの長い歴史のなかで洗練されてきた機能である一方、一定の御作法に従って使う必要があります。たとえばRB_OBJ_WRITEやRB_OBJ_WRIT

                                    Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき
                                  • Onyx, a new programming language powered by WebAssembly

                                    Back to articlesOnyx, a new programming language powered by WebAssemblyLearn about Onyx, a new imperative programming language that leverages WebAssembly and Wasmer for seamless cross-platform support What is Onyx? Onyx is a new programming language featuring a modern, expressive syntax, strict type safety, blazingly-fast build times, and out-of-the-box cross platform support thanks to WebAssembly

                                      Onyx, a new programming language powered by WebAssembly
                                    • Python is a Compiled Language

                                      This blog post hopes to convince you that Python is a compiled language. And by “Python”, I don’t mean alternate versions of Python like PyPy, Mypyc, Numba, Cinder, or even Python-like programming languages like Cython, Codon, Mojo1—I mean the regular Python: CPython! The Python that is probably installed on your computer right now. The Python that you got when you searched “python” on Google and

                                      • Onyx Programming Language

                                        A data-oriented, expressive, and modern programming language

                                        • Modular: Mojo🔥 - It’s finally here!

                                          Since our launch of the Mojo programming language on May 2nd, more than 120K+ developers have signed up to use the Mojo Playground and 19K+ developers actively discuss Mojo on Discord and GitHub. Today, we’re excited to announce the next big step in Mojo’s evolution: Mojo is now available for local download – beginning with Linux systems, and adding Mac and Windows in coming releases. While the Mo

                                            Modular: Mojo🔥 - It’s finally here!
                                          • AST vs. Bytecode: Interpreters in the Age of Meta-Compilation

                                            233 AST vs. Bytecode: Interpreters in the Age of Meta-Compilation OCTAVE LAROSE, University of Kent, UK SOPHIE KALEBA, University of Kent, UK HUMPHREY BURCHELL, University of Kent, UK STEFAN MARR, University of Kent, UK Thanks to partial evaluation and meta-tracing, it became practical to build language implementations that reach state-of-the-art peak performance by implementing only an interprete

                                            • The path to implementing a programming language

                                              This blog tries to summarize all the choices and paths you could take to implement your next programming language, more specifically the frontend for your language. There are a lot of factors that will influence your choices. Maybe you have your favorite host language that you would like to use for implementing your language, whether your language is dynamically or statically typed, or you are des

                                              • Building a Toy Programming Language in Python

                                                I thought it would be fun to go outside of my comfort zone of web development topics and write about something completely different and new, something I have never written about before. So today, I'm going to show you how to implement a programming language! The project will parse and execute programs written in a simple language I called my (I know it's a lame name, but hey, it is "my" language).

                                                  Building a Toy Programming Language in Python
                                                • TypeScript is Surprisingly OK for Compilers

                                                  TypeScript is Surprisingly OK for Compilers Aug 17, 2023 There are two main historical trends when choosing an implementation language for something compiler-shaped. For more language-centric tasks, like a formal specification, or a toy hobby language, OCaml makes most sense. See, for example, plzoo or WebAssembly reference interpreter. For something implementation-centric and production ready, C+

                                                  • Progress toward a GCC-based Rust compiler [LWN.net]

                                                    This article brought to you by LWN subscribersSubscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible. 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 comp

                                                    • 再計算を用いたMN-Core向けコンパイラの最適化 - Preferred Networks Research & Development

                                                      私がPFNに入ってから知った、もっとも好きな技術トピックの一つである、MN-Core™向け再計算のご紹介をします。再計算(recomputation、rematerializationやcheckpointingなどのキーワードで呼ばれることもあります)は、その名の通り同じ計算を複数回することで、GPUメモリを節約するために再計算を利用するテクニックは広く知られています。PFNでも、再計算を使ったメモリ節約アルゴリズムに取り組み、実際の事業でフル活用しています。 MN-Core向けの再計算は、消費メモリ削減でなく、高速化を主目的としています。再計算で計算する量が増えるにも関わらず、高速化が達成できるというのが、私がとても面白いと思う点です。カラクリを紹介していきます。 MN-Coreは、DRAMとSRAMの二種類のメモリを持ち、使えるリソースをとにかく演算器に費やしているのが特徴のアクセラ

                                                        再計算を用いたMN-Core向けコンパイラの最適化 - Preferred Networks Research & Development
                                                      • The JavaScript Oxidation Compiler

                                                        We're thrilled to announce that oxlint is now generally available! This milestone signifies our team's ability to promptly address and triage issues. Oxlint is a JavaScript linter designed to catch erroneous or useless code without requiring any configurations by default. How to Use ​At this stage, oxlint is not intended to fully replace ESLint; it serves as an enhancement when ESLint's slowness b

                                                          The JavaScript Oxidation Compiler
                                                        • HTML: The Programming Language

                                                          Introduction HTML, the programming language, is a practical, turing-complete[1], stack-based programming language based on HTML, the markup language. It uses elements defined in HTML, the markup language, in order to do computations. To give you a sense of what HTML, the programming langauge, looks like, below is a sample program that prints the values from 1 to 10 to standard out (console.log) A

                                                          • Effective TypeScript › The Saga of the Closure Compiler, and Why TypeScript Won

                                                            Here's something that makes me feel old: in just six months, Gmail will celebrate its 20th anniversary. If you weren't actively developing web sites at the time, it's hard to capture just how revolutionary it was. This was a time when JavaScript was held in almost universally low regard. The idea that you could build a sophisticated web app using it was mind-boggling. But it clearly worked and it

                                                              Effective TypeScript › The Saga of the Closure Compiler, and Why TypeScript Won
                                                            • A decade of developing a programming language

                                                              In 2013, I had an idea: "what if I were to build my programming language?". Back then my idea came down to "an interpreted language that mixes elements from Ruby and Smalltalk", and not much more. Between 2013 and 2015 I spent time on and off trying different languages (C, C++, D and various others I can't remember) to see which one I would use to build my language in. While this didn't help me fi

                                                              • CS 6120: The Self-Guided Course

                                                                Syllabus Schedule Lessons Zulip Discussions Blog CS 6120: Advanced Compilers: The Self-Guided Online Course CS 6120 is a PhD-level Cornell CS course by Adrian Sampson on programming language implementation. It covers universal compilers topics like intermediate representations, data flow, and “classic” optimizations as well as more research-flavored topics such as parallelization, just-in-time com

                                                                • The life and times of an Abstract Syntax Tree

                                                                  By Francesco Bertolaccini You’ve reached computer programming nirvana. Your journey has led you down many paths, including believing that God wrote the universe in LISP, but now the truth is clear in your mind: every problem can be solved by writing one more compiler. It’s true. Even our soon-to-be artificially intelligent overlords are nothing but compilers, just as the legends foretold. That sma

                                                                    The life and times of an Abstract Syntax Tree
                                                                  • Simply Parse in C

                                                                    by Chloe Kudryavtsev People are terrified of parsers and parsing. To the point of using magical libraries with custom syntaxes to learn just to get started. In the hopes of completely shattering this preconception, I will write a parser for the “ini” file format in about 150 lines of pure and readable ISO C99. Furthermore, this parser will be something that's nice to use and has error correcting f

                                                                      Simply Parse in C
                                                                    • GitHub - fuzzballcat/milliForth: A FORTH in 386 bytes — the smallest real programming language ever as of yet.

                                                                      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

                                                                        GitHub - fuzzballcat/milliForth: A FORTH in 386 bytes — the smallest real programming language ever as of yet.
                                                                      • Freedom and Portability

                                                                        The economic advantages of portability are very great. In many segments of the computer industry, the dominant cost is development and maintenance of software. Dennis Ritchie and Stephen Johnson 1978 … many insist that C is the programming language and that it will last forever. Byte Magazine 1983 The August 1983 issue of Byte Magazine devoted its cover, and a large part of its editorial content,

                                                                          Freedom and Portability
                                                                        • Exploring the c4... compiler?

                                                                          This week I found myself digging through the code of c4, an implementation of C “in four functions”, by Robert Swierczek. I remember coming across c4 when it was released ten years ago. It got me excited: hey, C in four functions, that means it’s easy to understand right? That excitement turned into “oh, I see” as soon as I scrolled through the code. c4 is dense, barely commented, and, frankly, st

                                                                            Exploring the c4... compiler?
                                                                          • WASM Playground

                                                                              WASM Playground
                                                                            • Cuis-Smalltalk

                                                                              “Yay, Juan. You GO, guy! …a great example of malleable software (and a clever mind) at work.” Dan Ingalls “I like it… It’s nice and clean and simple and pretty. Nice stuff!” Alan Kay “I think you have a very elegant design aesthetic.” John Maloney Cuis is a free Smalltalk-80 environment with a specific set of goals: being simple and powerful. It is also portable to any platform, fast and efficient

                                                                              • P/Invoke source generation - .NET

                                                                                .NET 7 introduces a source generator for P/Invokes that recognizes the LibraryImportAttribute in C# code. When it's not using source generation, the built-in interop system in the .NET runtime generates an IL stub—a stream of IL instructions that is JIT-ed—at run time to facilitate the transition from managed to unmanaged. The following code shows defining and then calling a P/Invoke that uses thi

                                                                                  P/Invoke source generation - .NET
                                                                                • GitHub - nanochess/bootLogo: Logo language in 508 bytes (x86 boot sector)

                                                                                  You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                                    GitHub - nanochess/bootLogo: Logo language in 508 bytes (x86 boot sector)