RubyKaigi 2017 Lightning Talk http://rubykaigi.org/2017
1/66 >> First Last LLVM と ELVM のはなし はまじしん一ろう
Hello, everyone! Click here for up to date build instructions Today I am happy to make the first release of the Common Lisp implementation “Clasp”. Clasp uses LLVM as its back-end and generates native code. Clasp is a super-set of Common Lisp that interoperates smoothly with C++. The goal is to integrate these two very different languages together as seamlessly as possible to provide the best of b
https://github.com/shinh/beflisp Lisp インタプリタを作りました。今度は Befunge で。 https://github.com/shinh/beflisp/blob/master/beflisp.bef コードを見ればわかりますが、手書きは諦めました。 前回の sed と違って Befunge は数値演算は素直に提供してくれてるので、アドレス計算なんかをするプリミティブが提供しやすいです。ただ、 Befunge-93 は文字列とか関数コールという概念が無いので、手動でフロー管理するのは地獄でしょうね… ということで、 C で lisp を書いて、それを clang で LLVM bitcode に変換してから、トランスレータで Befunge に変換、という構成になっています。 実装 トランスレータは任意の C コードを Befunge に変換でき
As a high level summary, I am a well-known leader who is distinguished by a hands-on approach to building systems. I am co-founder and CEO of Modular AI. I built and scaled many open source compiler infrastructures, including LLVM, Clang, MLIR, and CIRCT. These span the gamut of fundamental systems at the HW/SW boundary - powering iOS, Android, CUDA, TensorFlow, and countless other products and te
Batteries includedCrystal’s standard library comes with a whole range of libraries that let you start working on your project right away. Check the API docs # A very basic HTTP server require "http/server" server = HTTP::Server.new do |context| context.response.content_type = "text/plain" context.response.print "Hello world, got #{context.request.path}!" end address = server.bind_tcp(8080) puts "L
hello int main() { puts("hello"); } 生成されたコード // EMSCRIPTEN_START_FUNCS function _main() { var label = 0; var $1=_puts(((8)|0)); return 0; } Module["_main"] = _main; // EMSCRIPTEN_END_FUNCS 8がだだっぴろいメモリへのインデックスなのはわかるけど、それはどこで定義されてるのかな…と hello で検索しても見つからない。 104 で検索すると見つかった。 STATIC_BASE = 8; STATICTOP = STATIC_BASE + 8; /* memory initializer */ allocate([104,101,108,108,111,0,0,0], "i8", ALLOC_NONE, R
Lisp for iOS, Android, and OS X.Creating mobile applications shouldn't require you to do everything in Java and Objective-C. With mocl, you can put your application logic into a shared Lisp library that runs on iOS, Android, and even OS X. Furthermore, since mocl runs an expansive subset of Common Lisp, an ANSI standard like C, you can also run your CL code on other implementations, and target the
LLVM is a complex piece of software. There are several paths one may take on the quest of understanding how it works, none of which is simple. I recently had to dig in some areas of LLVM I was not previously familiar with, and this article is one of the outcomes of this quest. What I aim to do here is follow the various incarnations an "instruction" takes when it goes through LLVM's multiple compi
内容紹介本書は趣味でLLVMを触っている著者二人のLLVMをもっと普及させていきたいと思いから生まれたLLVM解説本です。 LLVMは今非常に注目されていますが、度重なるAPI仕様の変更や公式ドキュメントの充実さなどが理由で、まとまった解説がなされたものはありませんでした。本書によりまとまった情報が日本語で手に入るようになり、多くの方にLLVMを知って頂けると幸いです。 本書ではLLVMを使用したコンパイラの作り方を順を追って説明しLLVMへの理解を深めてもらおうというのがコンセプトになっています。フロントエンド(中間表現出力まで)、ミドルエンド(最適化)、バックエンド(オブジェクト生成)と幅広く解説していますので多くの方に有用な内容を含んでいるのではないでしょうか。 LLVMの用途は多岐にわたり,本書では解説できていない部分もありますが,初心者向けの情報としてLLVMを利用するための基礎
Fast Julia was designed for high performance. Julia programs automatically compile to efficient native code via LLVM, and support multiple platforms. Dynamic Julia is dynamically typed, feels like a scripting language, and has good support for interactive use, but can also optionally be separately compiled. Reproducible Reproducible environments make it possible to recreate the same Julia environm
Project "Alchemy" is now the Flash C++ Compiler (FlasCC) FlasCC lets you bring existing C/C++ code to the web, with high performance, across browsers. Leverage the entire Flash Runtime API from C++, deliver full GPU accelerated graphics, and reach over a billion people with no install using C/C++. Learn more and start using FlasCC Adobe Labs: Home | Technologies | Download | Community | RSS Feeds
Clang: a C language family frontend for LLVM The Clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project. Both a GCC-compatible compiler driver (clang) and an MSVC-compatible compiler driver (clang-cl.exe) are provided. You can get and build the source today. Feature
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く