
コード最適化の限界: 新しいSingletonパターン実装
私は、java Singletonパターンがスレッドセーフではなく修正できないということが、プログラミングの世界ではよく知られている事実であるということを発見しました。Singletonパターンの特定の実装を提供し、これらの実装がどのように壊れる可能性があるかを公正に解説し、一般化された主張で結論が出されています。

私は、java Singletonパターンがスレッドセーフではなく修正できないということが、プログラミングの世界ではよく知られている事実であるということを発見しました。Singletonパターンの特定の実装を提供し、これらの実装がどのように壊れる可能性があるかを公正に解説し、一般化された主張で結論が出されています。

Ruby 1.9でのファイバー (コルーチン) の追加、および最近のErlangおよびアクターの人気など、あまり知られていない概念がRubyプログラミングの世界に入ってきている。並行性を考えたときにRubyの世界で何が使用可能であるかを大まかに理解するため、長年RubyコミュニティのメンバーであるMenTaLguY氏に話を伺った。
EngineYardはRubiniusをAppCloud PaaSサービスに提供し始めた。InfoQはEvan Phoenix氏にRubiniusの状態、新しいパフォーマンスツール、GIL除去の状況について聞いた。
MacRuby 0.7 が公開された。通常のパフォーマンスや互換性の改良に加えて,Ruby 1.9.2 との互換性も向上している。Snow Leopard の Grand Central Dispatch (GCD) との密な結合を実証するため,ControlTower という Rack ベースの Web サーバもリリースされている。さらに,新しい BridgeSupport によって,すべての API へのアクセスとスクリプト記述が可能になった。
Rubinius 1.1がリリースされた。JITと性能が改善され、デバッグ機能とプロファイリング機能が強化された。また、GILのアルゴリズムも見直された。しかし、GILは間もなく過去のものになるだろう。RubiniusプロジェクトのHydraと名付けられたブランチでは、GILのないRubiniusが育てられている。JRuby、IronRuby、MacRubyのようなGILのないVMの仲間入りするのも時間の問題だ。InfoQはこのHydraブランチについてEvan Phoenix氏に話を聞いた。
JRuby-Profは、新しいオーバヘッドの小さいJRuby用のプロファイラで、単純なJavaプロファイラと違って、きれいなRuby固有のレポートを生成する。JRubyの新しいフィーチャであるJRuby::Synchronizedモジュールは、拡張すれば、クラスの全てのメソッドをsynchronizedにできる。
Pythonの高速化を支援するUnladen SwallowプロジェクトはメインストリームのPythonへ統合することを提案した。このプロジェクトの目標のひとつはGILを削除することだった。 Antoine Pitrou氏によるPythonの新しいGILはマルチコアCPU上で、よりスムーズに動くようになり、今までよりも邪魔にならなくるだろう。また、Squeak Smalltalk が Android上へ移植された。
Clojure 1.1 RC1 が公開された。永続的データ構造に可変性の制御機能を与える "トランジェント(Tranjent)",遅延シーケンスを効率化する "チャンクシーケンス(Chunked Sequence)" の導入によって,関数プログラミングのコンストラクタに関するオーバーヘッドが改善されている。InfoQ では,これら改良点がどのように動作するかを調査した。
MacRuby 0.5の最初のベータがリリースされた。これは新しいVM、JIT、AOTを備え、GILの削除を実現している。InfoQはMacRubyコアチームにインタビューして、MacRubyの状況とMacRubyを使ってiPhoneアプリが書けるかなどについて聞いてみた。