並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 357件

新着順 人気順

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

Compilerに関するエントリは357件あります。 programmingプログラミングコンパイラ などが関連タグです。 人気エントリには 『コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み | ログミーBusiness』などがあります。
  • コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み | ログミーBusiness

    Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。植山氏は、制作中のリンカである「mold」について発表しました。全2回。前半は、リンカの概要について話しました。 LLVMのリンカ「lld」オリジナルの作者植山類氏:植山類です。今僕が作っているmoldというリンカについて発表します。 今回の発表の概要です。リンカが何かを知っている人はそんなにたくさんいないと思うので、まず説明します。次に、「mold」のポイントは速いことなのですが、速いと何がうれしいのかを説明します。そのあと、どれくらい速いのかを説明した上で、どう実現されているのか、概要を紹介します。詳細になると何時間あっても終わらないので、かなりハイレベルな話をします。 自己紹介のスライドを入れていませんが、僕はリンカを何度か作ったことがあって、LLVMのlldの

      コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み | ログミーBusiness
    • あなたのPythonを100倍高速にする技術 / Codon入門

      はじめに Pythonは世界的にも人気のあるプログラミング言語ですが、実行速度については課題があります。Pythonの実行速度を高速化したい、という要求は根強く、これまでにも様々なツールや処理系が開発されています。 この記事ではMITの研究者らが開発したPythonを高速化するツール「Codon」について紹介します。 この記事を3行でまとめると: 高性能で簡単に扱えるPythonコンパイラ「Codon」 Pythonとの互換性がありながら、CやC++に匹敵する高速化を実現 実際にPythonコードが100倍速くなることを検証 Codonとは Codonは高性能なPythonコンパイラです。実行時のオーバーヘッドなしにPythonコードをネイティブなマシンコードにコンパイルし、シングルスレッドで10-100倍以上の高速化が実現できます。Codonの開発はGithub上で行われており、2021

        あなたのPythonを100倍高速にする技術 / Codon入門
      • TypeScript 本体のコードを読んでみよう

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

          TypeScript 本体のコードを読んでみよう
        • ゼロからの OS 自作入門 メモ

          「ゼロからの OS 自作入門」の実装メモ

            ゼロからの OS 自作入門 メモ
          • 「Linux」、バージョン6.1でRustを導入へ--トーバルズ氏が明言

            Linuxカーネルの記述言語としてプログラミング言語Rustを導入するという議論は、かなり前から存在していた。Linuxカーネルの開発者らは、年次カンファレンス「Linux Plumbers Conference(LPC)2020」の場で、Linuxの新たなインラインコードでのRustの使用について検討を開始していた。また、「Android」(それ自体がLinuxのディストリビューションだ)の開発言語としてRustを支持しているGoogleは、2021年4月にLinuxカーネルへのRust導入の動きを後押しし始めていた。 GoogleのAndroidチームに所属するWedson Almeida Filho氏は当時、「カーネルを実装するための実用的な言語として、RustはC言語とともに利用される準備が整ったと考えている。特権コード内に潜む潜在的バグやセキュリティ脆弱性の数を減らす上で役立つほ

              「Linux」、バージョン6.1でRustを導入へ--トーバルズ氏が明言
            • Cコンパイラを作ろう!

              こんにちは、21Bのseasonです。この記事はtraP夏のブログリレー3日目の記事です。 自作Cコンパイラでセルフホスト達成しました。 リポジトリ: https://github.com/season1618/c-compiler/tree/main 自作Cコンパイラでセルフホスト達成しました!!!!!!🎉🎉🎉https://t.co/8fLIAJWksQ pic.twitter.com/2fgH5sKoZ0 — season (@season1618) July 27, 2022 実際にどうやって作るかを書くと長くなるので、ここでは経緯とか完成までの流れとかを書こうと思います。一応開発メモは以下に上げておきました。 開発メモ: https://github.com/season1618/note/blob/main/cs/c-compiler/index.md 経緯 大学の講義で

                Cコンパイラを作ろう!
              • 元Google植山 類の“実装力”の源をSakana AI・秋葉拓哉が探る「集団開発のしがらみに、個人開発で殴りこむ」 - エンジニアtype | 転職type

                moldを作ったのは「大学院の単位を取るため」だった 秋葉:植山さんと最初に接点を持ったのは、僕がマウンテンビューのMicrosoft Researchでインターンをしていた時だったと記憶しています。エンジニアならば誰が見ても驚くような開発を成し遂げ続けているので、ぜひ詳しくお話を聞きたいと思い対談のリクエストをさせていただきました。 植山:ありがとうございます。初めてお会いした当時から、秋葉さんはプログラミングコンテストの上位ランカーで実力があって、おまけに話も上手かった。なかなか直接関わる機会はなかったけど、時流に乗ってディープラーニングに着手して活躍しているという話はよく耳にしていました。 秋葉:確かに、植山さんと知り合った頃はまだディープラーニングには手を出していなかったですね。今ではAIへと専門領域を移して久しいので、振り返ると長い時間が経ちました。 今回は、個人の力で優れたプロ

                  元Google植山 類の“実装力”の源をSakana AI・秋葉拓哉が探る「集団開発のしがらみに、個人開発で殴りこむ」 - エンジニアtype | 転職type
                • 新刊『型システムのしくみ』の発売を4/18に予定しています

                  ご来店ありがとうございます。新刊発売予定のお知らせです。 2025年4月18日(金)、遠藤侑介著『型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語』の発売を予定しています。なお、2025年4月16日(水)から開催されるRubyKaigi 2025会場のBOOKSTOREにて、著者サイン会に合わせた先行発売を予定しています(紙書籍のみ。部数には限りがあります)。ジュンク堂池袋本店様でも4月16日から販売していただける予定です。 『型システムのしくみ』について 多くのプログラミング言語では、さまざまな場面で「型」が登場します。特に静的型付き言語では、プログラムを実行せずに潜在的な問題をあぶり出す「型検査」の有用性が広く知られるようになりました。最近では動的型付き言語でも、型ヒントや静的解析ツールとして、この機能を部分的に取り入れる動きがあります。 型検査の背

                    新刊『型システムのしくみ』の発売を4/18に予定しています
                  • PythonでC/C++に匹敵する実行速度を実現 米MITなどコンパイラ「Codon」開発

                    Innovative Tech: このコーナーでは、テクノロジーの最新研究を紹介するWebメディア「Seamless」を主宰する山下裕毅氏が執筆。新規性の高い科学論文を山下氏がピックアップし、解説する。Twitter: @shiropen2 Pythonは人気な言語だが、実行速度が遅いため、速さを求められる環境になると違う言語が採用される。この研究では、Pythonのような高水準言語のシンプル性とCやC++のような低水準言語の高速性を兼ね備えることができるPythonベースのコンパイラ「Codon」を提案する。 Codonは、Pythonのコードをネイティブなマシンコードにコンパイルするコンパイラであり、シングルスレッドにおいて通常のPythonよりも10倍から100倍速く実行され、CやC++に匹敵する速度を実現できるという。またCodonではマルチスレッドも可能なため、より大きな性能向上

                      PythonでC/C++に匹敵する実行速度を実現 米MITなどコンパイラ「Codon」開発
                    • マイクロソフト、ビルド時にソフトウェアの部品表(SBOM)を自動生成する「SBOM Tool」、オープンソースで公開

                      マイクロソフト、ビルド時にソフトウェアの部品表(SBOM)を自動生成する「SBOM Tool」、オープンソースで公開 マイクロソフトは、ビルド時にそのソフトウェアがどのようなソフトウェア部品から構成されているかを示すデータ「SBOM」を生成してくれるツール「SBOM Tool」を、オープンソースで公開しました。 SBOMによるサプライチェーンリスクの解決 SBOMとはSoftware Bill Of Materialsの頭文字をとったもので、日本語では「ソフトウェア部品表」とされます。あるソフトウェアがどのようなソフトウェア部品によって構成されているのかを示す情報がまとまったデータのことです。 ほとんどのソフトウェアは単独で成立しているわけではなく、多数のライブラリやコンポーネントなどのソフトウェア部品に依存しています。そのなかのいずれかに脆弱性が発見されればドミノ倒しのように他のさまざま

                        マイクロソフト、ビルド時にソフトウェアの部品表(SBOM)を自動生成する「SBOM Tool」、オープンソースで公開
                      • Pythonは遅い遅い言われてJITとか中途半端なことせずにフルネイティブコンパイラを作ったらどうですか?

                        回答 (13件中の1件目) 現代の「インタプリタ」ってほぼVMコードへのコンパイル+VMでの実行で、よほどナイーブな実装でない限り既にかなり速いです。そのままVMコードへのコンパイルをネイティブコードへのコンパイルにしてもたいして速くならないんですよ。 結局何に時間かかってるかというと実行時の型検査やディスパッチ、アロケーションで、そこを何とかしないといくらネイティブコンパイルしても速くなりません。そのためには: 1. 部分的にでも型宣言などを取り入れて静的型付けに寄せる 2. コンパイル時解析をうんと頑張って型推論や生存期間解析する 3. 実行時にどんなデータが来るかを見てから部分...

                          Pythonは遅い遅い言われてJITとか中途半端なことせずにフルネイティブコンパイラを作ったらどうですか?
                        • TypeScript の Go 移植に備えて知っておくべきこと

                          はじめに こんにちは、ダイニーの ogino です。 TypeScript のコンパイラは今まで TypeScript で実装(セルフホスト)されていました。 それが TypeScript 7.0 から、Go による実装に移植され、10 倍高速になります。 本記事は、移植に関して筆者が疑問に感じた点を、GitHub discussion や TypeScript lead architect のインタビュー動画などから調べてまとめたものです。 移行の背景 今回 Go に移植される背景は、大規模な TypeScript コードベースをコンパイルする際のスピードの遅さにあります。 例えば VSCode のコードベース (150 万行) に対して tsc を実行すると、約 80 秒もかかります。 TypeScript のコンパイルは大きく以下の段階に分けられ、その内の check が特に複雑で重

                            TypeScript の Go 移植に備えて知っておくべきこと
                          • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

                            GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) に食わせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

                              アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
                            • WebAssemblyで、JITコンパイラに迫る高速なJavaScriptエンジンを実装へ。Bytecode Allianceが技術解説。JavaScript以外の言語でも

                              WebAssemblyで、JITコンパイラに迫る高速なJavaScriptエンジンを実装へ。Bytecode Allianceが技術解説。JavaScript以外の言語でも 「Bytecode Alliance」は、WebAssemblyをWebブラウザだけでなく、デスクトップPCやサーバ、IoTデバイスなどあらゆる環境で、セキュアに実行することを目指している団体です。 Fastly、Mozilla、Arm、Google、マイクロソフト、インテルをはじめとする企業や団体が名前を連ねています。 参考:WebAssemblyをあらゆるプラットフォームでセキュアに実行できるようにする「Bytecode Alliance」発足。インテル、Mozilla、Red Hatなど 同団体は「WASI」と呼ばれる、どのOSやホストシステムでWebAssemblyモジュールが実行されたとしても、安全かつ透過的

                                WebAssemblyで、JITコンパイラに迫る高速なJavaScriptエンジンを実装へ。Bytecode Allianceが技術解説。JavaScript以外の言語でも
                              • Webassemblyコンパイラを自作しよう

                                この記事はBuild your own WebAssembly Compilerを翻訳・意訳したものです。また独自の説明を加えた部分もあります。 前置き もしあなたがWebAssemblyについて聞いたことがなく、本当に詳しい紹介をしてほしいのであれば、Lin Clark氏のCartoon Guideを読むことをお勧めします。 このブログ記事ではWebAssemblyが「何か」を学ぶことができますが、「なぜ存在するのか」についても簡単に触れておきたいと思います。 私の視点では、この図が非常に簡潔にまとめられています。 上の図は、ブラウザ内での JavaScriptコードの実行を簡略化したタイムラインです。左から右に向かって、コード(一般的にはminifyされた状態で提供されます)は AST に解析され、最初はインタプリタで実行され、徐々に最適化/再最適化されて、最終的には非常に高速に実行さ

                                  Webassemblyコンパイラを自作しよう
                                • マイクロソフト、次の.NET 7にネイティブコンパイラを搭載する見通しを明らかに

                                  マイクロソフトは現在開発中のフレームワーク「.NET 7」で、ソースコードからターゲットプラットフォームに対応したネイティブバイナリをコンパイル時に生成するAOT(Ahead of Time)コンパイラを搭載する見通しだと、「Announcing .NET 7 Preview 3」で明らかにしています。 AOTコンパイラ、すなわち事前コンパイラとは、アプリケーションのビルド時にソースコードをコンパイルしてネイティブバイナリを生成する機能を備えています。 一般に「コンパイラ」とはこのAOTコンパイラのことを指すことが多いですが、アプリケーション実行時にソースコードや中間コードから動的にネイティブバイナリを生成するコンパイラのことをJIT(Just-in-Time)コンパイラと呼ぶのに対比して、あえて「AOTコンパイラ」と呼ぶことも最近では増えてきました。 現在、.NET対応のプログラミング言

                                    マイクロソフト、次の.NET 7にネイティブコンパイラを搭載する見通しを明らかに
                                  • 新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話

                                    私は新たにプログラミング言語を学ぶとき、しばしば簡単なLisp処理系を作ってみます。いくつかの言語で取り組んでいるうちに、このLisp処理系群に小さな共通基盤も出来上がったりしているので、これを紹介しつつ、Lisp処理系の実装がプログラミング言語の学習にどう丁度いいのかを紹介します。 Rosetta Lisp 自作のLisp処理系群を、ロゼッタ・ストーンから名を借りてRosetta Lispと呼んでいます。Rosetta Lispは以下のような特徴を持ちます。 一定の共通した言語仕様・VMの仕様に基づいて動作する Rosetta Lispは (Rosetta Lispに準拠するLisp処理系群は)、いずれも共通した命令セットのVM上でLispプログラムを実行するように実装されています。 Lispの簡単な実装では、よくインタプリタ形式が採用されます。kanaka/malやrui314/min

                                      新しいプログラミング言語を学ぶとき、簡単なLisp処理系を作るという話
                                    • Perry — TypeScript → Native

                                      v0.5.306 — generational GC + lazy JSON tape default, faster than Node and Bun on most benchmarks One Codebase. Every Platform. Native Performance.Perry compiles TypeScript to native GUI and CLI apps on macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly, and the Web. No runtime. No Electron. Just native binaries.

                                        Perry — TypeScript → Native
                                      • TypeScript 7はなぜGoで書き直されたのか — 10倍高速化の技術的背景

                                        TypeScriptコンパイラが「Go」で書き直された衝撃 150万行のコードを持つVS Codeプロジェクト。そのTypeScriptビルドが、77.8秒から7.5秒に短縮されました。 10.4倍の高速化です。 2025年3月11日、TypeScriptの生みの親であるAnders Hejlsbergが公式ブログで発表した内容は、フロントエンド開発の常識を覆すものでした。TypeScript 7では、コンパイラの実装言語がTypeScript(JavaScript)からGoに完全移行します。これにより、ビルド速度の10倍高速化、エディタ起動の8倍高速化、メモリ使用量の50%削減が実現されます。 この記事では、3つの軸からこの変化を読み解いていきます。 なぜGoが選ばれたのか — RustでもC++でもない理由 どう速くなるのか — 10倍高速化の技術的な仕組み 開発現場への影響 — 今す

                                          TypeScript 7はなぜGoで書き直されたのか — 10倍高速化の技術的背景
                                        • golangではスタックとヒープを気にする必要が無い

                                          調べようと思ったきっかけは、golang では以下のように ローカル変数のアドレスを戻り値としても問題ないということ。 package main import ( "fmt" ) type Animal struct { Name string Age int } func main() { animal := allocAnimal() fmt.Printf("allocate animal structure %p", animal) } func allocAnimal() *Animal { return &Animal{} } C/C++ ではローカル変数のポインタを戻り値とした場合、 スタック領域のポインタを関数外に渡してしまうため、コンパイル時点で警告が表示されます (なぜエラーにしない) 実行時には最悪、セグメンテーションフォールトで落ちます そのため、malloc や n

                                            golangではスタックとヒープを気にする必要が無い
                                          • Rustのビルドを高速化する方法 | POSTD

                                            Rustコードのコンパイルが遅いことは誰でも知っています。しかし筆者は、世の中のほとんどのRustコードはコンパイルをもっと速くできると強く感じています。 例えば、つい最近の記事にこのように書かれていました。 一方、Rustでは、プロジェクトやCIサーバーの性能にもよりますが、 CIパイプラインの実行に15~45分かかります。 これは筆者には理解できません。GitHub Actions上にあるrust-analyzerのCIの所要時間は8分です。しかも、これは100万行の依存関係に加え、20万行の独自コードが記述されたとても大規模で複雑なプロジェクトでの話です。 確かに、Rustは根本的な部分で非常にコンパイルが遅いのは間違いありません。Rustはジェネリクスのジレンマにおいて「遅いコンパイラ」を選び、全体的な設計思想としてコンパイル時間よりもランタイムを優先しています(この点に関する優れ

                                              Rustのビルドを高速化する方法 | POSTD
                                            • 自作したRISC-V向けCコンパイラでセルフホストまでこぎつけた - 詩と創作・思索のひろば

                                              低レイヤを知りたい人のためのCコンパイラ作成入門 まさに低レイヤのことが分かっておらず、以前から気になっていたこの本。取り掛かってみたところ思いのほかスイスイ進められて、勢いに乗ってセルフホスト(自分が書いたコンパイラで自分自身をコンパイルするところ)までいけたので記念に書いておく。正確には C コンパイラのサブセットです。 GitHub - motemen/mocc 全体的な進め方は、 上記の本の通りに進めていく。 それ以降は自作の 8queen が普通に書けるように機能を強化。 それ以降はセルフホストを目標に進める。 プリプロセッサやリンカは作らず、C からアセンブリまで。 という感じ。自分は手を動かさないと進んでる気がしないので、まずは書いてみつつわからない所があれば調べる、というスタンスでいく。 あと、せっかくなので RISC-V の勉強もしたかったのでこれ向けに書く。なので実行は

                                                自作したRISC-V向けCコンパイラでセルフホストまでこぎつけた - 詩と創作・思索のひろば
                                              • 型システムを知りたい人のための型検査器作成入門

                                                @ 関数型まつり2025(2025-06-14) https://fortee.jp/2025fp-matsuri/proposal/5699c262-e04d-4f58-a6f5-34c390f36d0d

                                                  型システムを知りたい人のための型検査器作成入門
                                                • Rubyを単一バイナリ化し実行速度を最大87倍にする「Spinel」:Matz氏がAIと協働し、わずか数週間で開発 | XenoSpectrum

                                                  TL;DR Ruby開発者のまつもとゆきひろ氏が、Claudeを活用してRubyのAOTネイティブコンパイラ「Spinel」を約1ヶ月で開発した。PrismによるAST解析とC言語へのコード生成を組み合わせ、CRuby比で最大87倍の処理速度向上を実現している。メタプログラミングや動的評価を制限したサブセット仕様であり、CLIツールやエージェント連携用途での有力な選択肢となる。 Rubyの開発者であるまつもとゆきひろ(Matz)氏が、「Spinel」と名付けられた新たなAhead-Of-Time(AOT)コンパイラを公開した。RubyKaigi 2026の基調講演で発表されたこのプロジェクトは、Rubyのソースコードを読み込み、最適化されたC言語のコードを生成した上で、最終的にシステムの標準Cコンパイラ(GCCやClang)を用いてスタンドアロンのネイティブ実行バイナリを構築する。インター

                                                    Rubyを単一バイナリ化し実行速度を最大87倍にする「Spinel」:Matz氏がAIと協働し、わずか数週間で開発 | XenoSpectrum
                                                  • Graydon HoareのCompiler講義資料が面白かった話 - Arantium Maestum

                                                    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

                                                      Graydon HoareのCompiler講義資料が面白かった話 - Arantium Maestum
                                                    • Tamagui

                                                      A style library for React and/or React Native with a large typed superset of the React Native style API, with no outside dependencies in about 24Kb. An optimizer that makes Core faster via partial analysis, CSS extraction, tree flattening, and dead code elimination. Next, Webpack, Vite, Babel, Metro.

                                                        Tamagui
                                                      • 形式手法特論:コンパイラの「正しさ」は証明できるか? #burikaigi / BuriKaigi 2026

                                                        BuriKaigi 2026 で使用したスライドです。 本セッションでは、定理証明支援系 Lean を用いたコンパイラの実装技法を解説します。ただしこれは本質的にはコンパイラのトークではありません。頭の痛い複雑なロジックや、うんざりするほど多様な入力データと戦っている、すべてのソフトウェアエンジニ…

                                                          形式手法特論:コンパイラの「正しさ」は証明できるか? #burikaigi / BuriKaigi 2026
                                                        • やってよかったbuild own x系(自作OSとか自作DBみたいな自作~)を紹介してみる

                                                          はじめに build own xってなに?という方がいらっしゃると思います。 下記ページにあるような自作~みたいなやつのことを指しています。 自作OSとかDBとかとにかく様々な種類があるんですが、僕がやってみて良かったなぁと感じたものだけ紹介します。(一部やってないけど良さそうなのも紹介します。) 難易度を星5を最高として書いていきます。 言語は日本語 or 英語です。 コンパイラ writing interpreter in go 形態:本 言語: 日本語、英語 コンパイラ系なら一番初めにおすすめなのは間違いなくこれ。 日本語版では「Go言語でつくるインタプリタ」という題で出版されています。 外部に依存するライブラリを一切使わないのが特徴でスクラッチで書きます。 語り口調も平易でわかりやすく、コンパイラ?インタープリタ?という方にもおすすめ。 Monkeyという言語を実装するのですが、既

                                                            やってよかったbuild own x系(自作OSとか自作DBみたいな自作~)を紹介してみる
                                                          • コンパイル技法: パターンマッチ

                                                            本書では関数型言語をはじめとして多くの言語にあるパターンマッチをコンパイルする方法を紹介します。パターンマッチはシンプルに条件分岐の連鎖にコンパイルすることもできますが、よく研究された手法を使えば驚くほど効率的なコードを生成できるようになります。そのような手法を2種類紹介します。 パターンマッチはデータ型に照合しそのデータを取り出すものです。例えばRustであれば match opt { Some(x) => f(x), None => g()} のように Option 型への照合などに使えます。本書の前半ではパターンマッチの挙動や使い方などを学びます。挙動の確認にはプログラミング言語Standard MLを使い、一部Cのコードも使います。その後Common LispやJavaなどの他の言語でのパターンマッチの状況を確認します。後半ではパターンマッチのコンパイル技法について紹介します。パタ

                                                              コンパイル技法: パターンマッチ
                                                            • 最高の構文木の設計 2024年版

                                                              Osaka RubyKaigi 04 https://regional.rubykaigi.org/osaka04/

                                                                最高の構文木の設計 2024年版
                                                              • 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
                                                                • tscをGoに移植 | POSTD

                                                                  筆者はTypeScript型チェッカーtscをRustではなく、Goに移植しようと思います。拡張可能なRustプラットフォームSWCの作者の発言としては、奇妙に聞こえるかもしれません。理由を説明したいと思います。 なぜtscを移植するのか TypeScriptの普及が進むにつれて、大規模プロジェクトではあるジレンマに直面しています。型チェックは、ワークフローの中で最も時間がかかるプロセスの一つになっているのです。開発者は、イテレーションのサイクルを遅らせることなく、型安全を保証することを望んでいます。 tsc(TypeScript Compiler)は、型の妥当性をチェックし、コードをJavaScriptにコンパイルします。コードの量が多いほど、コンパイルには時間がかかります。中規模から大規模のTypeScriptプロジェクトでは、このコンパイルに膨大な時間がかかります。開発者はワークフロ

                                                                    tscをGoに移植 | POSTD
                                                                  • Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック | ログミーBusiness

                                                                    Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基本的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであってもリ

                                                                      Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック | ログミーBusiness
                                                                    • TypeScriptのコンパイラをGo言語でネイティブ化、10倍速にした「TypeScript Native Previews」が公開

                                                                      TypeScriptのコンパイラをGo言語でネイティブ化、10倍速にした「TypeScript Native Previews」が公開 マイクロソフトは、TypeScriptのコンパイラを始め各種ツール群をGo言語に移植することでコンパイラの処理速度を10倍速にした新バージョンとなるTypeScriptのプレビュー版「TypeScript Native Previews」の公開を発表しました。 Today we're announcing previews of the native port of TypeScript! These nightly previews will be available on npm and the VS Code marketplace! npm install -D @​typescript/native-preview npx tsgo --vers

                                                                        TypeScriptのコンパイラをGo言語でネイティブ化、10倍速にした「TypeScript Native Previews」が公開
                                                                      • 「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人” | ログミーBusiness

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

                                                                          「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人” | ログミーBusiness
                                                                        • Ichigo Lispコンパイラ完全解説

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

                                                                          • 構文解析器入門

                                                                            PHPカンファレンス関西2025「構文解析器入門」の発表スライド https://2025.kphpug.jp/ #phpkansai

                                                                              構文解析器入門
                                                                            • 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
                                                                              • mints: 5.7kb の TypeScript コンパイラを作った

                                                                                世の中の TypeScript コンパイラが大きすぎるので作りました。 ここで試せます。 jsx と jsx pragma のサポートもしたので、 preact も動いています。 実装方針 ビルドサイズ第一 とにかく軽量に mints自体が他のコードをビルドするときの速度ではない点に注意 現状、まともなエラーレポートが出ない。エラーメッセージをインライン化するとビルドサイズが増えるため。 空白行と型情報を落とすだけ ES5 への変換や commonjs への変換は実装しない enum と constructor と jsx のみ transform する特殊対応をしている 真面目な構文解析をしてない 例えば 1+1*2 のような binary expression は結合順を解析してない。型を落とすだけなら不要 prettier でフォーマットされたコードはコンパイルできるのが目標(空白行

                                                                                  mints: 5.7kb の TypeScript コンパイラを作った
                                                                                • コンパイラ - 共立出版

                                                                                  本書は、プログラミングやコンピュータに興味を持つ者が、コンパイラの原理と構造、さらにその開発方法を基礎から理解するためのテキストである。 コンパイラの理解は、コンピュータの原理やプログラムの実行のしくみを理解する基礎である。そこで本書では、チューリングらによって確立された計算可能性の理論と万能計算機の構築方法を基礎として、コンパイラを含むプログラミング言語処理系の構築原理とその構造を解説する。これらの理解を基に、コンパイラ実現のための主要な基盤技術を、その原理とその背後にある考え方を含め習得することを目標とする。この考え方を理解することができれば、従来難解と受け止められているLR構文解析や多相型の型推論などの技術も見通し良く習得できる。 これらのコンパイラの原理と構造の理解に加えて、先端的言語コンパイラの開発方法を習得するために、実際に実行可能なインタープリタと抽象機械へのコンパイラを開発

                                                                                    コンパイラ - 共立出版

                                                                                  新着記事