並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 105件

新着順 人気順

llvmの検索結果1 - 40 件 / 105件

llvmに関するエントリは105件あります。 programmingLLVMプログラミング などが関連タグです。 人気エントリには 『オープンソースビジネスの挑戦と現実|Rui Ueyama』などがあります。
  • オープンソースビジネスの挑戦と現実|Rui Ueyama

    いい感じのオープンソース・ソフトウェアを書いて、それを元に起業することを考えてみたことがある人は結構いるようだ。実際に僕はここ1年半ほど、自作のオープンソース・ソフトウェアを元にビジネスを立ち上げようと試行錯誤してきた。その経験についてここでシェアしてみようと思う。 あらすじ薄々予期していたことではあったけれど、結論から言うと、そんなにはうまくいかなかった話ということになる。要点をまとめると次の通りだ。 「moldリンカ」というオープンソースのツールを開発して、それを元にビジネスを行おうとしていた そこそこ稼ぐことはできたものの、大きなリターンを得るのは難しかった ほとんどの企業はオープンソースを大々的に活用していても「無料のソフトウェア」にはお金を払うつもりはないし、払いたくても社内制度上できない 大きなリターンを得たいのならば、自作のオープンソース・ソフトウェアを元にサービスを立ち上げ

      オープンソースビジネスの挑戦と現実|Rui Ueyama
    • Mojoは「C言語のように速いPython」なのか - k0kubun's blog

      LLVMやSwiftを作ったChris LattnerがCEOをやっている会社が、Pythonの使用感とC言語並の性能を併せ持つ言語としてMojoをアナウンスした。 まだ手元で試せる状態でリリースされてはいないが、最大35000倍Pythonより速いという。 Mojo🔥 combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models. Also, it's up to 35000x faster than Python 🤯 and … deploys 🏎 pic.twitter.com/tjT09U4F80— Modular (@Modular_AI) May

        Mojoは「C言語のように速いPython」なのか - k0kubun's blog
      • ウワサのBlawnを触ってみた - Qiita

        program = block block = lines lines = line | lines line line = line_content EOF | line_content END | definition | import import = "import" STRING_LITERAL EOL line_content = expression definition = function_definition | class_definition | c_type_definition | global_definition | c_function_declaration function_definition = "function" identifier arguments EOL block return_value EOL | "function" ident

          ウワサのBlawnを触ってみた - Qiita
        • あなたの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入門
          • WebAssemblyの歴史について

            はじめに 最近、Node.jsとDenoの開発者であるRyan DahlさんがJavaScript Containersという記事を書いていることを知った。 Webとの親和性の高さがサーバーサイドで求められる中、JavaScriptがユニバーサルスクリプトとして活躍するだろう。そして、コンテナランタイムがLinuxコンテナの抽象レイヤーとしてあるように、JavaScript界隈では既存のWebAPIそのものが抽象化の手助けとなるであろう、みたいな趣旨の内容だった。 彼がChromeのV8 JavaScript Engineを使ってNode.jsを誕生させた同じ頃、JavaScriptの可能性を信じて方法を模索した人がいる。Alon Zakaiさんだ。 Alon(以降、敬称略)はWebAssemblyやその考えの元になった asm.js 、 JavaScriptコンパイラ Emscripte

              WebAssemblyの歴史について
            • Linuxカーネルビルド大全 - Qiita

              はじめに (本記事は Linux Advent Calendar 2020 および 東京大学 品川研究室 Advent Calendar 2020の11日目の記事として書かれました。) カーネルのビルドについての情報はググると色々と出てきますが、「ここを見ればOK」と思えるサイトに巡り会えていないので、自分で書いてみることにしたのが本記事です。 いずれLinuxカーネルをビルドする必要にかられるであろう研究室・学科の後輩や、忘れっぽい将来の自分のためにも、改めてLinuxカーネルのビルド方法についてまとめてみたいと思います。 概要 さて、「カーネルをビルドしよう」という状況に置かれた場合、実際にすべきことは主に以下の4点だと思います。 ソースコードの取得 ビルド環境の構築 カーネルコンフィグの準備 ビルド及びインストール そこで本記事では、カーネル本体のビルド上記の4点の他、関連して以下の

                Linuxカーネルビルド大全 - Qiita
              • Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に

                Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に Modular社はPythonの高速なスーパーセットだと同社が位置づける新言語「Mojo」をローカル環境で実行可能にする、コンパイラなどのツール群を公開しました。 Mojo is now available for download locally to your machine! Beyond a compiler, the Mojo SDK includes a full set of developer and IDE tools that make it easy to build and iterate on Mojo applications. Let’s build the future together!https://t.co/KxmLvsxx5e — Modula

                  Pythonの高速なスーパーセットをうたう新言語「Mojo」、コンパイラなど公開、ローカル環境で利用可能に
                • 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」開発
                  • [速報]マイクロソフト、ArmネイティブなVSCode、.NET、WSLなど投入へ。Python、Node.jsなどのArm対応も進行中。Microsoft Build 2022

                    [速報]マイクロソフト、ArmネイティブなVSCode、.NET、WSLなど投入へ。Python、Node.jsなどのArm対応も進行中。Microsoft Build 2022 マイクロソフトは現在開催中の開発者向けイベント「Microsoft Build 2022」で、Arm64ネイティブなVisual Studio Codeや.NET、Windows Subsystem for Linuxなどを投入することを明らかにしました。 投入予定として発表されたのは以下のソフトウェアです。 フル機能のVisual Studio 2022 Visual Studio Code Visual C++ .NET 6 旧.NET Framework Windows Terminal Windows Subsystem for Linux Windows Subsystem for Android 以下

                      [速報]マイクロソフト、ArmネイティブなVSCode、.NET、WSLなど投入へ。Python、Node.jsなどのArm対応も進行中。Microsoft Build 2022
                    • C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium

                      発端はuchan_nos氏によるこのツイートでした。 C言語で、本当にメモリの0番地にデータを書きたいときはどうすりゃええの?— うー@技術書典8 Day1う31 BitNOS (@uchan_nos) 2020年2月12日 それに対する私のリプライ: uint8_t *p = 1; p--; *p = v;— hikalium (@hikalium) 2020年2月12日 私はこれで話が終わると思っていたのだが、どうやらそうではなかったらしく、色々な視点からの意見が加わりながら、話は混沌を極めたのでした…。 ということで、ここに私のこのツイートに対しての見解とか、わかったことをまとめておこうと思います。 私のリプライの背景について uchanさんが求める「0番地にデータを書きたい」という課題設定を、私はこのように解釈しました。 C言語において、整数0をポインタに変換すると、それはNULL

                        C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium
                      • 開発イテレーション偏重 - 兼雑記

                        開発イテレーションを早くすれば、かなりの問題が勝手に解決される、と信じています。なんか最近、他の要素を軽視しすぎていたり、特にイテレーション速度に影響しなさそうなことすらしている気がしていて、信仰とかのレベルかもしれない、という気がしてきたので、ちょっと書いてみようかなと。主に C++ の話です。 仕事とかしてると良い判断力が求められたりしますが、判断というのは結構難しいですよね。アプローチ A と B で悩んだ時に、手が速ければ両方できたりします。開発イテレーションを無限に速くすると、必要とされる判断力はゼロに漸近していきます。やったね。 2手で変更の正当性を高速に確認できるようにする make (かその他のビルドコマンド)てやったらビルドができて、 make check (かその他のテストスクリプト)てやったら遅くないテストが全部走る、という体勢が好きです。試すためにはあっちのディレク

                          開発イテレーション偏重 - 兼雑記
                        • Rustのビルドを高速化する方法 | POSTD

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

                            Rustのビルドを高速化する方法 | POSTD
                          • 「作って学ぶコンピュータアーキテクチャ」の環境を再現するためのDockerイメージをリリースします - FPGA開発日記

                            「作って学ぶコンピュータアーキテクチャ」(いわゆるRISC-V + LLVM本)は書籍執筆時の状況と出版時のツールチェインの状況がかなり変わってしまっており、各所で迷惑をかけてしまっています。 確実にLLVMビルド + シミュレーションを行うために、ツールチェインを含んだDockerイメージをリリースします。 github.com 大きく分けて4つのイメージを用意しています。 ubuntu_2204 Ubuntu 22.04の環境を使用し、新しいRISC-Vツールを使用したDocker環境です 本書で説明している実行コマンド列と大きく異なっている場所があります LLVMリポジトリはコンテナ内にダウンロード済みです(コンテナ容量削減のためビルドは行っていません) 最終的なバイナリのみ必要な方向けです ubuntu_2204_onlyenv Ubuntu 22.04の環境を使用し、新しいRIS

                              「作って学ぶコンピュータアーキテクチャ」の環境を再現するためのDockerイメージをリリースします - FPGA開発日記
                            • 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
                              • 「Spring Native」ベータ版公開、GraalVMによりSpring FramworkのJava/Kotlinアプリをネイティブイメージにコンパイル。JavaVMに依存せず瞬時に起動可能

                                「Spring Native」ベータ版公開、GraalVMによりSpring FramworkのJava/Kotlinアプリをネイティブイメージにコンパイル。JavaVMに依存せず瞬時に起動可能 Spring Frameworkの開発チームとGraalVMの開発チームは、GraalVMを用いてSpring Frameworkのアプリケーションをネイティブイメージにコンパイルする「Spring Native」がベータ版として公開されたことを発表しました。 Announcing Spring Native Beta! Read the blog post https://t.co/5klXV6kSVB and check out the video for more details. #spring #native #graalvm https://t.co/83pI3vNYEr — Spri

                                  「Spring Native」ベータ版公開、GraalVMによりSpring FramworkのJava/Kotlinアプリをネイティブイメージにコンパイル。JavaVMに依存せず瞬時に起動可能
                                • 「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”

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

                                    「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”
                                  • LLVM入門 - javascript使いがLLVM(Rust:inkwell)でjavascriptをJITコンパイルするまで

                                    コンパイラ基盤であるLLVMについて、全く知識がない私が、 javascriptソースコードをパースしLLVMでコンパイルできるようになりました。 LLVMの記事は数多くありますが、初心者向けの記事が少なく感じたため、 本記事では、できる限り分かりやすくLLVMについて紹介できる記事を書こうと思います。 ソースコードは、こちらに置いています。 自己紹介 ふだん、javascriptやpythonなどインタプリタ言語を使うエンジニアです。 LLVMについて、全く知識がなかった人間です。 背景 過去に、おもちゃのブラウザ自作をやってみました。 HTMLとCSSを解析し、レンダリングするところを書き、基本的な動作を知ることができました。 HTMLとCSSとくれば、次はJSだと思い、JSを実行するエンジンを書いてみたくなりました。 ただし、WebブラウザのAPIとJS実行エンジンをバインディングす

                                      LLVM入門 - javascript使いがLLVM(Rust:inkwell)でjavascriptをJITコンパイルするまで
                                    • オープンソースプログラミング言語zigまとめ - Qiita

                                      WebAssemblyのモジュール記述のためのプログラミング言語を調べていると、比較的新しいオープンソースのプログラミング言語zigがWebAssemblyモジュールを書くのに適している感じだったので、ソースコードを書いて動かしながら調べたことについて、コードに出ている順で並べています。 この文章中で用いているソースコードはmacOSやlinux上でビルド可能な状態で以下のURLにおいてあります: https://gist.github.com/bellbind/3c52ea6e506656701c9b7ff00a8599fa Qiitaは現時点でzigコードのシンタックスハイライトに未対応であり視認性がよくないですが、githubではzigコードでもシンタックスハイライトされます。 0. プログラミング言語zigについて オープンソースのプログラミング言語zigは、以下のURLで公開され

                                        オープンソースプログラミング言語zigまとめ - Qiita
                                      • FacebookのHermesというJSエンジンがエロい - Qiita

                                        FacebookがHermesという組み込みのJSエンジンを公開したようです。 ReactNative用の組み込み用のJSエンジン(最新版だとオプション切り替えで使えるっぽい) MITライセンス プロプラなものとの組み合わせが発生しうる組み込みにおいては正義しかない ES2015をサポート(予定) 現時点ではクラスとかlet/constのブロックスコープは実装途中 Map/Setとかの組み込みクラス系は実装済み サイズの小ささをうたった処理系はES2015への対応はまだまだなのが多いので(Duktapeとか)良い 事前にJavaScriptのソースコードをパースして中間表現(LLVM IRをそのまま利用?)にしておいてロードする モバイルのCPUやバッテリー、メモリーにも優しい なお、エロいというのは強く感情が揺さぶられた結果が出てきたワードであってセクシャルな内容は一切含まれておりません

                                          FacebookのHermesというJSエンジンがエロい - Qiita
                                        • 自作コンパイラ基盤の話 - Qiita

                                          これは、言語実装 Advent Calendar 2020 19日目の記事です。 最近は、コンパイラやインタプリタなどの言語処理系や、それに類するものを作る人が増えてきています。(私の周りだけかもしれませんが。) しかし、もう一歩進んで、コンパイラ基盤を作ってみたという話はあまり聞きません。 コンパイラ基盤は、それの対象とするアーキテクチャについてや、それ自体の使い勝手を考えるのが非常に面白いものです。また、コンパイラ基盤を作る中で、コンパイラや計算機自体についてより深く学ぶことが出来ます。 この記事では、私が開発中のコンパイラ基盤を例として、コンパイラ基盤について語っていきます。 そもそもコンパイラ基盤とは コンパイラ基盤と言えば、近年色々な所で目にするのがLLVMです。 LLVMを使うことで、コンパイラの複雑で面倒な部分を避けつつ、コンパイラを構成することができるようになりました。 下

                                            自作コンパイラ基盤の話 - Qiita
                                          • 【寄稿】独自言語のコンパイラをLLVM backendを用いて作る「ミニキャン言語を作ってみよう!」講義録 - Flatt Security Blog

                                            はじめに 弊社Flatt Securityでは学生の学びを支援したいという想いから今回少額ではありますが高橋さんの留学を支援させていただき、そのご縁で弊社のYONEUCHI, Takashi (@lmt_swallow) | Twitterもスタッフを務めるセキュリティミニキャンプにおける素晴らしい講義の内容をテックブログに書いていただけることになりました。以下本文になります。 @00_ です。今年の夏のUC Berkeleyへの留学費用をFlatt Securityさんに支援して頂いた経緯で、セキュリティミニキャンプの講義内容についてテックブログで書くことになりました。 2019/09/28-2019/09/29 のセキュリティミニキャンプ山梨で「ミニキャン言語を作ってみよう!」の講座を行いました。この講座では、「ミニキャン言語(MC言語)」という独自言語のコンパイラを、自分がコミッタで

                                              【寄稿】独自言語のコンパイラをLLVM backendを用いて作る「ミニキャン言語を作ってみよう!」講義録 - Flatt Security Blog
                                            • インフィニットループは PHP の継続的な発展を目指す The PHP Foundation に寄付をしました|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

                                              インフィニットループは会社として、先日設立された The PHP Foundation にささやかながら寄付をしました。 PHP 原作者の Rasmus Lerdorf さんと Laravel 原作者の Taylor Otwell さんと JetBrains さんとあいえるたんが同じ画面におさまって見えるのは、たぶん今だけ……! TL;DR この記事では、以下の内容について述べています。 PHP は主要開発者が抜け、今後のために Foundation を作りました 弊社は支援を行いました 継続的な PHP の成長のためにみなさんの会社でも寄付を考えていただけませんか

                                                インフィニットループは PHP の継続的な発展を目指す The PHP Foundation に寄付をしました|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
                                              • MLIR がもたらす新たな中間表現の可能性

                                                はじめに 半導体の微細化が鈍化し、ハードウェアによる高速化が困難になっている現状において、ソフトウェアによる計算の高速化が喫緊の課題となっています。この状況において、特定のドメインの問題を解くことに最適化された言語であるドメイン固有言語と、そのコンパイラであるドメイン固有コンパイラの活用が望まれています。 ドメイン固有コンパイラの構築の際には、開発を容易にするために、既存のコンパイラ基盤であるLLVMを活用することが考えられます。しかし、LLVM はドメイン固有コンパイラの構築にはあまり向きません。この理由は、LLVM の成功と表裏一体の関係にあります。 LLVM が成功した理由は、コンパイラの処理を適切に分割し、独立したモジュールとして機能させたことにあります。このモジュール化において中心的な役割を果たしているのが、LLVM で用いられる中間表現(Intermediate Represe

                                                  MLIR がもたらす新たな中間表現の可能性
                                                • Rust + LLVMでプログラミング言語を自作してセルフホスティングした話

                                                  llrlは自作のプログラミング言語です。大きな特徴が2つあります。 Hindley-Milnerベースの型推論による静的型付け (+型クラス) Lisp-likeなS式によるシンタックスとLLVM JITによるマクロ この言語の処理系をRustとLLVMを用いて実装し、それをllrl上に移植してセルフホスティングを試みました。無事セルフホスティングを達成したので、取り組んだことやモチベーションなどを順に振り返りたいと思います。 LLVMについては、フロントエンド側・バックエンド側ともに既にいくらかの解説記事が見られるため、概要は省略します。今回は新たなプログラミング言語のバックエンドとしてLLVMを用いるので、LLVMのフロントエンド側の実装がメインとなります。 事の発端: LLVM Kaleidoscopeチュートリアル Kaleidoscopeは、LLVMのチュートリアルにおいて実装す

                                                    Rust + LLVMでプログラミング言語を自作してセルフホスティングした話
                                                  • MIR: A lightweight JIT compiler project | Red Hat Developer

                                                    For the past three years, I've been participating in adding just-in-time compilation (JIT) to CRuby. Now, CRuby has the method-based just-in-time compiler (MJIT), which improves performance for non-input/output-bound programs. The most popular approach to implementing a JIT is to use LLVM or GCC JIT interfaces, like ORC or LibGCCJIT. GCC and LLVM developers spend huge effort to implement the optim

                                                      MIR: A lightweight JIT compiler project | Red Hat Developer
                                                    • Swiftにおけるインポートとリンクの仕組みを探る

                                                      Swiftにおけるインポートとリンクの仕組みを探る iOSDC 2019

                                                        Swiftにおけるインポートとリンクの仕組みを探る
                                                      • 自作OCamlコンパイラでセルフホストした - molecular coordinates

                                                        概要 ここ最近作っていたOCaml*1コンパイラmlml*2でセルフホストを達成しました。ヤッター github.com mlmlには以下に代表されるような、OCamlの基本的な機能が実装されています。 再帰関数 ヴァリアント、レコード パターンマッチ カリー化 モジュール また、多少の標準ライブラリも実装されています。 mlmlの特徴 ほぼフルスクラッチ 今回LLVMやパーサジェネレータに頼らないコンパイラづくりを体験するのが目的の一部だったので、結果的にフルスクラッチらしきこと*3になりました。OCamlの標準ライブラリ以外の外部ライブラリを使用しておらず、字句解析器・構文解析器は手書きです。 OCamlで書かれている セルフホストしたのでそれはそうなんですが、OCamlで書かれています。 また、言語処理系を書く場合ランタイムライブラリはC言語で用意してリンクする場合が多いと思いますが

                                                          自作OCamlコンパイラでセルフホストした - molecular coordinates
                                                        • A Complete Guide to LLVM for Programming Language Creators

                                                          Update: this post has now taken off on Hacker News and Reddit. Thank you all! Who’s this tutorial for?This series of compiler tutorials is for people who don’t just want to create a toy language. You want objects. You want polymorphism. You want concurrency. You want garbage collection. Wait you don’t want GC? Okay, no worries, we won’t do that :P If you’ve just joined the series at this stage, he

                                                            A Complete Guide to LLVM for Programming Language Creators
                                                          • 「RISC-V+LLVM本 付録2. 浮動小数点命令」を無償公開しました - FPGA開発日記

                                                            「作って学ぶコンピュータアーキテクチャ」では、執筆時点ですでに500ページを超えてしまい、泣く泣く2章分を削除しています。 1つ目の付録である「付録1. 関数呼び出しのバリエーションと高度な機能」についてはすでに公開済みですが、もう一つの「付録2. 浮動小数点命令」についても公開しました。 こちらは、LLVMに浮動小数点命令を追加し、いくつかのアプリケーションを動かそうというものです。 github.com この章は、本当は基本的な演算や機能の実装後に挿入したかった章で、以下の範囲をカバーしています。 この章は割と頑張ったもので、浮動小数点の説明から、実装、さらにアプリケーションを2つ実装しています。 後半のレイトレーシングはかなり頑張った部分で、最後に画像が正しく出力されたときは若干感動しました。 こちらも、担当編集の方の校正が入っていないので怪しい文章やもしかしたら誤った情報が入ってい

                                                              「RISC-V+LLVM本 付録2. 浮動小数点命令」を無償公開しました - FPGA開発日記
                                                            • Pythonより20%高速、「Pyston 2.0」が登場 | OSDN Magazine

                                                              Python実装のPyston開発チームは10月28日、メジャーリリースとなる「Pyston 2.0」を発表した。 PystonはCPythonのフォークで、LLVMおよびLLVMのJIT(Just In Time)実行エンジンを使用して構築されたPython実装。米Dropboxのプロジェクトとしてスタートしたが、2017年にDropboxがプロジェクトの支援を打ち切った。2020年はじめに一部の開発者が集まり、Pyston開発をフルタイムで行う企業を立ち上げたと報告している。 Pyston 2.0は2017年1月に公開されたバージョン0.6.1に続くリリース。CPythonと同レベルのC APIのサポートを実現しているという。 コード生成エンジンDynamic Assemble(DynASM)を使うことで、オーバーヘッドの低いJITを実現した。CPythonの最適化も図った。これら強化

                                                                Pythonより20%高速、「Pyston 2.0」が登場 | OSDN Magazine
                                                              • Rustがサポートするアーキテクチャ少なすぎる!

                                                                「RustでLinuxカーネルモジュールを実装しよう!」とはしゃいできましたが、実は、X86-64とLoongArchという2つのCPUアーキテクチャしかサポートされていません。近いうちに、ARM64もサポートされそうですが、Linuxカーネルがサポートする大半のアーキテクチャで、Rustは使えません。 Linuxカーネルの標準コンパイラのGCCは、CのソースコードをLinuxカーネルがサポートする様々なCPUアーキテクチャ用の実行ファイルに変換することができます。一方、Rustの公式コンパイラがサポートを保証しているCPUアーキテクチャはARM64とX86、X86–64だけです。 Rustの公式コンパイラがサポートしているアーキテクチャが少なすぎるということで、別のコンパイラを試してみました。 Rustの公式コンパイラRustの公式コンパイラは、コンパイラを実装するための基盤的なソフトウ

                                                                  Rustがサポートするアーキテクチャ少なすぎる!
                                                                • RustのLLVMに関する問題 - 日記

                                                                  概要 dereferenceable_globally NonZeroUXXのLower 空無限ループ 終わりに 概要 この記事はRust Advent Calendar 2019の12日目の記事として書かれました。 qiita.com 遅刻してしまった...すいません(最悪)。 言わずもがなRustはLLVMをバックエンドに持つ言語です。 なのでバグがLLVMの最適化のせいだったりします。有名な例はnoaliasとか無限ループとかです。この辺りは定期的(2ヶ月一回くらい?)にTwitterとかで話題になりますね。またRustでの強い制約がLLVMにおける意味とのギャップで弱く表現せざるを得なかったりもします。そんな感じのこと少しだけ掘り下げて、RustのIssueとかLLVMのPhabricatorから幾つかまとめてみます。怪しいこと言ってたら教えて下さい。 dereferenceabl

                                                                    RustのLLVMに関する問題 - 日記
                                                                  • LLVMの新しい中間言語表現 MLIRを試す(3. MLIRに関する発表資料を読む) - FPGA開発日記

                                                                    MLIRについてもう少し具体的な例を勉強するために、資料を読み込んでいくことにした。 以下の資料を参考にした。Chris Lattnerの所属がSiFiveに変わっているので、比較的最近の資料だ。 docs.google.com MLIRはMulti-Level Intermediate Representation Compiler Ifrastructureの略称である。 2004にLLVMを開発したときの想定構成。1つのIRを用意してすべてを解決する。マルチターゲット、解析、最適化など。 ところがこれだけでは上手く行かなくなった。LLVM-IRだけでなく複数の表現形式を使用する必要がある。現在のLLVM IRでは並列性やループなどの表現形式に問題がある。 Clangも同様。LLVM IRを出力するだけでなく、様々なアノテーションを出力する必要が生じたり、もはやC++の複雑な言語構文を

                                                                      LLVMの新しい中間言語表現 MLIRを試す(3. MLIRに関する発表資料を読む) - FPGA開発日記
                                                                    • Rust + PEG + LLVM で電卓を作る - Qiita

                                                                      言語書いてる人すごいな〜かっけな〜って思ったので、ちょっとした処理系を書いてみたくてやってみた。 主にWebやアプリを開発している人がやってみたので、処理系をやったことなくても、読みやすいと思う。 ※ ちょっと前に書いたRustのコードなので書き方がふるくなってるかも?? ソースコード https://github.com/anharu2394/rust-llvm-calculator 使ったライブラリ rust-PEG 知識がなくても、とりあえず簡単に構文が作れる。 inkwell LLVMのラッパー。安全にラップしたらしい。 詳しくないので勧められたから使った。 計算機の処理の流れ のちに詳しく説明する。 パース(文字列→AST) ↓ ASTをたどってLLVM IRに変換(AST->LLVM IR) ↓ (LLVM IRの関数を)実行する パース 上の通り、PEGというライブラリに任せ

                                                                        Rust + PEG + LLVM で電卓を作る - Qiita
                                                                      • こわくないLLVM入門! - Qiita

                                                                        対象読者 LLVMを勉強し始めたけど何からして良いのかわからない方 アセンブリがちょっとわかる 目標 LLVMの基本的な文法がわかるようになる 環境 Mac Mojave 10.14.6 LLVM 8.0.0 clang 8.0.0 (trunk 348837) LLVMってなに...? LLVMは一言で言えば、プログラミング言語を作成する為の基盤です。プログラミング言語はコンパイラによってバイナリに変換され実行することができます。それを言い換えれば、自分が考えたプログラミング言語のコンパイラを作ることで自作プログラミング言語を作れます。 そして、コンパイラは通常フロントエンド、ミドルエンド、バックエンドに分けられ、各プロセスで様々な処理をしています。特にミドルエンド、バックエンドでは中間言語や各アーキテクチャに対するたくさんの最適化を施さなければなりません。この最適化を預けてフロントエン

                                                                          こわくないLLVM入門! - Qiita
                                                                        • GitHub - exaloop/codon: A high-performance, zero-overhead, extensible Python compiler using LLVM

                                                                          Codon is a high-performance Python implementation that compiles to native machine code without any runtime overhead. Typical speedups over vanilla Python are on the order of 10-100x or more, on a single thread. Codon's performance is typically on par with (and sometimes better than) that of C/C++. Unlike Python, Codon supports native multithreading, which can lead to speedups many times higher sti

                                                                            GitHub - exaloop/codon: A high-performance, zero-overhead, extensible Python compiler using LLVM
                                                                          • GitHub - rui314/mold: Mold: A Modern Linker 🦠

                                                                            mold is a faster drop-in replacement for existing Unix linkers. It is several times quicker than the LLVM lld linker, the second-fastest open-source linker, which I initially developed a few years ago. mold aims to enhance developer productivity by minimizing build time, particularly in rapid debug-edit-rebuild cycles. Here is a performance comparison of GNU ld, GNU gold, LLVM lld, and mold when l

                                                                              GitHub - rui314/mold: Mold: A Modern Linker 🦠
                                                                            • Feature #18481: Porting YJIT to Rust (request for feedback) - Ruby master - Ruby Issue Tracking System

                                                                              TL;DR: The YJIT team wants to explore using Rust to help develop YJIT. The rest of CRuby will continue to build without Rust tools and building YJIT will remain optional. We’re currently exploring the possibility of porting YJIT to Rust and working on a small proof of concept that should be ready next month. The motivation behind this is that we are facing challenges in terms of code maintainabili

                                                                              • GHCのバックエンドについて | 雑記帳

                                                                                先日リリースされたGHC 9.2.1で、64ビットArm(AArch64)向けのネイティブコード生成器(Native Code Generator; NCG)が実装された。これを機会にGHCのバックエンドについて簡単にまとめてみる。 概略 GHCでHaskellプログラムをコンパイルすると、いくつかの中間言語を経て最終的には機械語が出力される。 この工程の最後の部分を「バックエンド」と呼ぶ。 GHCには Native Code Generator (-fasm)LLVM backend (-fllvm)unregisterised via-C backend の3種類のバックエンドが存在する。このほか、バイトコードインタープリターと-fno-codeもデータ型的にはバックエンドの一種として扱われている。(参照:compiler/GHC/Driver/Backend.hs) Native C

                                                                                • 実行プログラム作成基盤をフルスクラッチで書いた - DrumatoのBlog

                                                                                  こちらに移行しました. www.drumato.com

                                                                                    実行プログラム作成基盤をフルスクラッチで書いた - DrumatoのBlog

                                                                                  新着記事