Build faster, smaller, leaner applications An advanced JDK with ahead-of-time Native Image compilation
Ruby のコンパイラ開発を通じて言語処理系を作ってみよう。 基礎:構文解析結果 → バイトコードへの変換 発展:さらなる最適化・高速化Read less
LLRBというRuby向けのメソッドJITコンパイラを書いている github.com RubyKaigi 2015の最後のキーノートで@evanphxが「LLVMでCRubyのコードをインライン化するメソッドJITを実装したら速いんじゃね」みたいな発表をしていたのを覚えているだろうか。 LLRBというのはまさにそれを実装しているプロジェクトであり、少なくとも現時点で「LLVMでCRubyのコードをインライン化するメソッドJIT」と言える状態まで実装でき、ものによっては効果が出る状態になったので公開した。 なんで書いてるの 言語を自分で実装するとその言語に関する理解が大分深まる、というのをHamlの実装とかCコンパイラとかで体験していて、僕が一番好きな言語はRubyなのでRubyでもそれをやっておきたい、というのがあった。また、Rubyは遅いと言われがちだが、どこに改善可能な点が眠っている
≡ Google Chrome version 59 will ship with the headless option. This means you can test your web applications using chrome without needing xvfb. One problem: the latest chromedriver (version 2.29) doesn't support versions of Chrome higher than 58. The solution is to build the latest chromedriver that supports the latest chrome/chromium. Google does not make nightly builds of chromedriver public, yo
A proposal of new concurrency model for Ruby 3 Koichi Sasada ko1@heroku.com People love “Concurrency” Concurrent RubyKaigi (at least, there are two parallel sessions) Why people love (to discuss) “Concurrency”? •Performance by “Parallel” execution to utilize multiple-cores •Ruby has thread system, but MRI doesn’t permit to allow parallel execution. About this presentation •Show “Why difficult mult
2. 自己紹介:遠藤侑介 • Ruby コミッタ(2008年~) – Rubyのテストを増強した – コードカバレッジ測定機能を 実装した – キーワード引数を実装した – Ruby 2.0 リリースマネージャ だった – 最近は何もしてない 2 ’06下 ’07上 ’07下 ’08上 60 70 80 90 100 coverage(%) 70% 85% C0カバレッジ遷移 4. eval$s=%q(eval(%w(B=92.chr;N=10.chr;n=0;e=->(s){Q[Q[s,B],?"].gsub(N,B+?n)};E=->(s){'("'+e[s]+'")'};d=->(s,t=?") {s.gsub(t){t+t}};Q=->(s,t=?$){s.gsub(t){B+$&}};puts(eval(%q(%(objectXQRXextendsXApp{H("#{e[%((d
I love debugging tools. One of the most frustrating things to me is – when I run a Ruby or Python program, I can’t find out what that program is doing RIGHT NOW. You might eagerly interrupt me – julia, you say, you can use pdb! or pry! or rbtrace!. So, let me explain. If I’m running a program on the JVM with PID 4242, I can run jstack -p 4242, and it will print the current stack trace of the Java
https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs の翻訳です。かなり適当です。誤訳等あったらご指摘いただければと思います。 rvm seppku がすごく時間かかって暇なので、その間に rbenv について調べてたら発見したのでした。 binstub を学ぼう! binstub は実行可能ファイル(いわゆるバイナリー、コンパイルされているとは限らない)をラップしているスクリプトで、その目的は元の実行可能ファイルを呼び出す前に環境を整えることである。 Ruby の世界でいうと、RubyGems は実行可能ファイルを含んだ gem をインストールした後に、そいつの binstub を生成していたりする。binstub はどんな言語でも書けるから、自分自身で書いてみても良いんじゃないかな。 Ruby Gems gem
Pythonista以外が環境を汚さずにJupyter Notebookに触れる方法 あるいは,Rubyist以外が環境を汚さずにJupyter NotebookでRubyに触れる方法RubyPythonElixirDockerJupyter TL;DR Jupyter Notebookがアツい! RubyとかElixirも動かしてみたい! Dockerコンテナで動かせば楽! Docker ToolboxだけでOK! Pythonの知識なくても環境構築できる RubyやElixirの知識がなくてもJupyter Notebook上でそれらの言語が扱える Jupyter Notebookについて Jupyter Notebookがキテる!という話は色々なところでなされているため本稿では省略する: Jupyterがすごい勢いでやってくるからお前ら備えとけ(IPython Notebook +
toRuby & guRuby 出張版 でシグナルについてやってたので、関連して書いてみます。 どのような時にシグナルハンドラを定義するのか どのような時にシグナルハンドラを定義するのかという話がありました。 UNIXのデーモンプログラムは、何が由来なのかわかりませんが、SIGHUP で設定ファイルの再読み込みを行うのが慣習になっています。 SIGHUP はデフォルト動作ではプログラムを終了させてしまうだけなので、SIGHUP で特別な処理を行いたいプログラムはシグナルハンドラを定義しています。 本来 SIGHUP は端末が終了した時に端末上で動いていたプログラムに対してOSが発行するためのものです。 たとえば、端末エミュレータを開いて、 % sleep 9999 と実行してる状態で端末エミュレータを閉じると sleep プロセスに SIGHUP が送られます。別の端末から strace
In the first article, we examined why the fork() system call is useful and where it fits into the grand scheme of things. We saw that by passing a block to Kernel#fork or Process#fork it is possible to execute arbitrary code concurrently (or in parallel if there are multiple processors). In addition, we saw that although forking is relatively expensive, it can compete with threading if the Ruby im
I like to think of forking as the underdog of the concurrency world. In fact, at this point, many programmers have probably never even heard of it. The term “multithreaded” has almost become synonymous with “concurrent” or “parallel.” The fork() system call creates a “copy” of the current process. For our purposes in Ruby, it enables arbitrary code to run asynchronously. Since that code will be sc
mrubyのVMのマルチスレッド対応がgithubにて議論されています。 multi-thread support on the RiteVM #1657 自分もthread-safeなVMが欲しいなぁと思っています。STM32F4DiscoveryにFreeRTOS載せて使ってみたい。 並行・並列処理の戦国時代? さて、マルチコアが普通になったし、WebアプリのC10K問題があるので並行・並列処理は昨今のトピックです(多分)。 ただマルチスレッドプログラミングは難しすぎ!というは昔から言われていたことです。 で、もうちょい並行・並列処理を書きやすく出来ないのかよ?ということでErlang,go,Scala(Actor),EventMachine,Thread pool ,node.js,deferred,future,java.util.concurrent色々出てきました (言語とライ
$ bin/rails g scaffold user name:string mail:string password:string invoke active_record create db/migrate/20151214145437_create_users.rb create app/models/user.rb invoke test_unit create test/models/user_test.rb create test/fixtures/users.yml invoke api_resource_route route resources :users, except: [:new, :edit] invoke scaffold_controller create app/controllers/users_controller.rb invoke test_un
This document discusses Rhebok, a high performance Rack handler written in Ruby. Rhebok uses a prefork architecture for concurrency and achieves 1.5-2x better performance than Unicorn. It implements efficient network I/O using techniques like IO timeouts, TCP_NODELAY, and writev(). Rhebok also uses the ultra-fast PicoHTTPParser for HTTP request parsing. The document provides an overview of Rhebok,
IBM is developing a just-in-time (JIT) compiler called Testarossa based on its Open Runtime (OMR) toolkit. The goal is to integrate the JIT compiler into MRI Ruby to improve performance without changing how MRI works. So far, the JIT supports most opcodes and can run Rails applications, but performance gains are modest. IBM hopes to collaborate with the Ruby community to further optimize Ruby and
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く