Blaise v0.10.0:ネイティブバックエンド、スレッド対応、インクリメンタルコンパイルをサポート

2026/06/08 21:55

Blaise v0.10.0:ネイティブバックエンド、スレッド対応、インクリメンタルコンパイルをサポート

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Blaise のバージョン 0.10.0 は、第 1 つのネイティブ x86-64 バックエンド(

--backend native
または
--target linux-x86_64
)の実装により大きなマイルストーンを達成し、外部アセンブラなしで ELF
.o
ファイルを生成する機能を備えています。このリリースでは、ゼロ引数の関数呼び出しに丸括弧の使用が義務付けられ(例:
TFoo.Create()
TFoo.Create
の代わりに)、Pascal 風のアムビュイティを排除します。一方、
Foo
は引き続き変数の読み取りとして扱われます。スレッドサポートは、
threadvar
宣言、原子 ARC、 Mutex 保護された弱参照、スレッド固有の割り当て器、および正しい TThread の動作を通じて導入されました。インクリメンタルな独立したコンパイルは、
.o
ファイルに埋め込まれた新しい
.bif
(Blaise Interface File)形式を使用した
--incremental
フラグにより利用可能になりました。ダイヤモンド演算子は高度な型推論を可能にします(例:
var L: TList<Integer> := TList<>.Create()
では左辺から
<Integer>
が推論されます)。追加の言語機能には、
Exit(Value)
ショートハンド、整数型に対するビット反転(
not
)、集合値定数(
[a, b]
)、そして
out
パラメータの明確な追跡が含まれます。コンパイラツールは、
--dump-ast
フラグ、マルチユニットビルドをサポートするプレフィックス符号のマングリング、Delphi/FPC のセマンティクスに一致した階層的シンボル検索機能により強化されました。TUI Kanban ツールは、タスク作成、UTC 日時の保存、外部ファイルの変更検出、および丸付きボックス描画を含む CLI の改良を受けました。2,627 テストのパスおよび固定点で検証済みの QBE IR が 262,202 ラインに達したことで、自己ホスティング能力が確認されました。v0.9.0 より以降のコミット数は 130 に過ぎず、すべてのアーティファクトは GitHub Releases ページにフル変更ログと共に用意されています。

本文

Blaise バージョン 0.10.0 のリリース発表

今回は、Blaise プログラミング言語のバージョン 0.10.0を正式にリリースいたします。これまでの最も大規模なアップデートであり、言語レベルの明確性向上、ネイティブ x86-64 バックエンド採用、スレッドサポート実装など、多数の革新が含まれています。🚀


🔧 引数ゼロの呼び出しにおける必須のパラメータ
()

今回の最大の変更点は、すべての関数呼び出しにおいて丸付き括弧(パラメータ)の使用が必須になったことです。引数が 0 でも同様です。

✅ 正しい書き方

F := TFoo.Create();  
Obj.Free();  
X := GetCurrentDir();  

❌ これからは受け付けません

F := TFoo.Create;  
Obj.Free;  
X := GetCurrentDir;  

採用のメリット

  • 曖義性の解消:
    Foo
    は変数読み取り、
    Foo()
    は関数呼び出しと区別可能です。これにより結果の代入や再帰処理におけるパスクール的な曖義性が排除されます。
  • ツール対応の改善:
    grep
    を用いた呼び出しサイトの探索が信頼性高く行えるようになりました。
  • 内部機構の整理: コンプコンパイラ内部の
    IsNoArgFuncCall
    機構を削除し、その過程で潜在的だったコード生成に関するバグ 3 つを同時に修正しました。🐛→🦋

「手順-フィールド」呼び出し機能の新規追加

  • Obj.Handler()
    : コードポインタを経由してディスパッチを行います。
  • Obj.Handler
    : フィールドの値を読み取ります。

🖥️ ネイティブ x86-64 バックエンド

Blaise は現在、QBE バックエンドと並行して、直接 x86-64 コードを生成するネイティブバックエンドを搭載しています。マイルストーン M1 から M8 の目標がすべて達成されました。

実装対応機能

  • 演算・制御フロー: 整数演算、浮動小数点演算、
    for
    ,
    while
    ,
    repeat
    ループ
  • データ構造: レコード、静的配列、動的配列、開配列
  • クラスシステム: メソッドディスパッチ、vtable、コンストラクタ、デストロクター
  • メモリ管理: ARC(Automatic Reference Counting)による文字列・クラス・インターフェースの保持/解放
  • ディスパッチ: itab 通じたインターフェースディスパッチ
  • 例外処理:
    try/except/finally
  • パフォーマンス: QBE バックエンドと同等の文字列操作性能
  • 高度な機能:
    var
    /
    out
    パラメータ、継承呼び出し、ジェネリクス支援(モノモルフィズム)、
    for-in
    文および
    case

使用方法

--backend native         # または
--target linux-x86_64    # オプションで指定可能
  • ELF フォーマットの `.o ファイルを直接生成します。
  • 外部アセンブラが不要です。💪

🧵 スレッドサポート

Blaise は一等市民としてのスレッド処理機能を取得しました。

スレッド機能リスト

  • threadvar
    : スレッドローカルストレージの宣言が可能に。
  • 原子 ARC: リファレンスクォンティングは原子インクリメント/デクリメントによりスレッドセーフ化。
  • 弱参照テーブル: ミュテックス保護により、複数スレッド間での動作が保証されます。
  • メモリアロケーター:
    threadvar
    通じたスレッド単位の割当によりロック競合を削減。
  • 例外処理: スレッドローカルな例外グローバル変数実装(独自の実行フレームチェーン割り当て)。
  • スレッド同期:
    TThread.Create(False)
    は ARC を介して
    Free()
    で正しくジョインされます。

すべては、実際のスレッドを起動するエンドツーエンドのテストで検証済みです。🧪


⚡ インクリメンタルな別ユニット間コンパイル

コンパイラがユニット単位のインクリメンタルコンパイルをサポートし、高速な再ビルドサイクルを実現しました。

主要機能

  • .bif
    ファイル
    : Blaise Interface File(公開インターフェースのシリアライズデータ)で、
    .o
    ファイル内に埋め込まれます。
  • --incremental
    フラグ
    : 変更されたユニットのみ再コンパイルし、未変更部分はキャッシュを再利用します。
  • 並列ビルド: ワーカースレッドによる複数のユニット同時インクリメンタルコンパイルが可能に。
  • EImportError の解消: 「ウォームインクリメンタル再コンパイル」機能により、陳腐なインターフェースデータ再利用によるクラッシュが全て解決されました。

.bif
形式のカバー範囲

定数、型(単純型、レコード、クラス、インターフェース、ジェネリックテンプレート)、ルーチン、グローバル変数、インラインボディ、呼び出し規約ディレクティブなどをすべて網羅します。


📦 言語機能および標準ライブラリの新規対応

  • ダイヤモンド演算子:
    var L: TList<Integer> := TList<>.Create();
    で左辺から型引数を推測可能に。
  • 簡易記法
    Exit(Value)
    : コンパイラ内 305 カ所で実装(自家消費テスト済み)。
  • 整数への
    not
    オペレーター
    :
    Integer
    ,
    Byte
    ,
    Word
    ,
    SmallInt
    ,
    Int64
    に対するビット補足演算が可能に。
  • セット値定数:
    const X = [a, b]
    および引数のセットとしてのセットリテラル対応。
  • パラメータモードの区別:
    out
    パラメータは
    var
    と明確に区別して追跡可能に。
  • 呼び出し規約ディレクティブ: ルーチン宣言での
    cdecl
    ,
    stdcall
    保持。
  • ブーリアン表示:
    WriteLn
    True
    /
    False
    を適切に表示します。
  • 無符号数表示: 32 ビット無符号数の
    WriteLn
    で正しく表示されます。
  • 改行保持:
    TStringList.Text
    および
    LoadFromFile
    が改行をトリミングなしで保持します。

🛠️ コンパイラ改善点

  • --dump-ast
    フラグ
    : セマンティクス解析後の完全解決された AST を出力し、コード生成問題の診断に役立ちます。
  • ユニットプレフィックス付きシンボル名リング: フリールーチン・クラス・アドレス演算式に所属ユニット名を追加し、マルチユニティビルド時のシンボル衝突を回避できます。
  • ユニット単位のシンボルキャッシュ: 高速な「使用チェーン」検索を実現。
  • レイヤー付きシンボル検索: 現在のユニットシンボルが優先され、Delphi/FPC のセマンティクスに準拠します。

🎯 キャンバンツール (TUI) の改善

組み込み TUI カンバンボード(

tools/kanban/
)にも以下の機能が追加されました:

  • CLI モード: 非インタラクティブなタスク作成が可能に。
  • 日付フォーマット: UTC 日時の保存とローカル表示の両対応。
  • マージ機能: 外部ファイルの変更検出とマージに対応。
  • 描画改善: 丸みを帯びた図形描画角と色のついた枠線。

📊 数値による成果

  • 2,627 のテストケースがパス ✅
  • 262,202 行の検証済み QBE IR が Fixpoint に到達
  • v0.9.0 より以来、130 以上のコミットを追加
  • FIXPOINT_OK: セルフホスト化が検証済み ✅

詳細な変更リストは [GitHub Releases ページ](https://github.com/your-repo/releases) からダウンロード可能です。 ※実際の URL に置換えてください。


ご意見・ご感想は大歓迎です!コメント、Issue 作成、あるいは単なる挨拶をお待ちしています。👋
次回以降のバージョン 0.11.0 へ邁進していきます!🙌

Pascal コミュニティのために ❤ で構築しました。

同じ日のほかのニュース

一覧に戻る →

2026/06/10 1:58

クロード・フェブル 5

## 日本語訳: 以下の改善されたバージョンでは、欠落していた安全性の詳細、具体的な価格設定構造、データ保持ポリシー、および可用性のタイムラインを補いながら、明瞭性を維持しています: ## まとめ: Anthropic は、一般使用に安全であり、ソフトウェア工学、可視化解析、長期コンテキスト処理、科学的研究、およびメモリータスクにおいて従来のすべてのバージョンを超えた「Mythos クラス」のモデルである **Claude Fable 5** を導入しました。同モデルは直ちに API とサブスクリプションプラン(Pro から Enterprise まで)で利用でき、6 月 22 日まで利用可能です(6 月 23 日からは使用クレジットに移行)。価格は入力トークンあたり **10 ドル**、出力トークンあたり **50 ドル** で設定されており、Claude Mythos Preview など以前のプレミアムモデルよりも大幅に安価です。 Fable 5 は転換的な性能向上を提供し、以前は何ヶ月もかかった工学タスクを数日へと圧縮するとともに、薬剤設計を約 10 倍加速させます。安全性と有用性のバランスを取りつつ、Fable 5 におけるセンシティブなトピックに関するクエリについては、**Claude Opus 4.8** にフォールバックを行う設定となっており、これは保守的なチューニングによりセッションの **約 5% よりも少ない割合** で発生します。さらに、特定の分類器は生物学/化学分野での危険な研究の向上や悪意のあるハッキング試行をブロックします。また、Anthropic は Mythos クラスモデルに対して新しい **30 日間のデータ保持ポリシー** を実施し、このトラフィックを新モデルの訓練や安全性以外の目的で使用することを禁止しています。 一般向けの Fable 5 バージョンは依然として非常に安全ですが、未検閲バージョンである **Claude Mythos 5** は、15 カ国以上で選択されたサイバーセキュリティおよびインフラストラクチャパートナー(将来的には約 150 の新しい組織へ拡大)を独占的に対象とする **Project Glasswing** を通じて利用可能です。この戦略的動きは、責任ある使用基準を損なうことなく科学的発見を加速し、重要インフラのセキュリティを強化することを目的としています。プログラムには、将来、特定の生命科学研究者のために生物学/化学の safeguards を解除する計画も含まれています。

2026/06/10 6:01

NPM バージョン 12 で導入される予定のbreaking changes

## Japanese Translation: npm v12 開始(推定リリースは 2026 年 7 月)、`npm install` に対してより厳格なセキュリティデフォルトが適用されます。最も重要な変更は、自動スクリプト実行の無効化です(`allowScripts` がデフォルトでオフ)。明示的に承認されないと、preinstall、install、postinstall スクリプト(`node-gyp` を介するネイティブビルドを含む)がブロックされます。準備のためには、これらの変更を警告付きで利用可能な npm v11.16.0+(またはそれ以降)を使用してください:`npm approve-scripts --allow-scripts-pending` を実行し、信頼できるパッケージについては `npm approve-scripts` で明示的に承認し、他は `npm deny-scripts` で拒否します。結果となる許可リストは `package.json` に書き込まれコミットすべきであり、v12 へのアップグレード後は承認されたスクリプトのみが実行されます。 さらに、デフォルトでは `--allow-git`(npm 11.10.0+ で利用可能)は none に解決され、Git ベースの依存関係に対して明示的なフラグが必要となり、`.npmrc` オーバーライドを介した潜在的なコード実行経路を閉じます。同様に、`--allow-remote`(npm 11.15.0+ で利用可能)はリモート URL から依存関係を解決する場合にデフォルトで none に設定されます。`--allow-file` および `--allow-directory` は現在のデフォルトを維持します。保守担当者および CI/CD パイプラインは依存関係を検証し、`package.json` 内の許可リストを更新し、アップグレード前に変更をコミットする必要があります。そうでない場合、手動の例外を設定しない限りビルド失敗となります。詳細は npm ドキュメントの `npm approve-scripts`、`npm deny-scripts`、および `allow-scripts config` をご参照ください。

2026/06/10 4:21

FPGA を用いたKolmogorov-Arnold Networkによる超高速機械学習

## Japanese Translation: 本テキストは、Kolmogorov-Arnold Network(KAN)を Field-Programmable Gate Array(FPGA)上で展開し、超高速機械学習に特化して設計された革命的な新ハードウェアアーキテクチャを導入します。従来の GPU はスケジューリング遅延およびメモリオーバーヘッドによりマイクロ秒以下の応答時間を達成できず苦労しますが、この FPGA ベースのアプローチでは、ニューラルネットワークをリプログラミング可能なデジタルロジックと直接統合するため、アルゴリズムと設計のコデザインを採用しています。固定された重みではなく、B スプライン基底関数によって定義される学習可能なエッジアクティベーションに置き換えることで、伝統的なルックアップテーブルモデルに見られるような指数関数的スケーリングの問題を回避します。この手法は、定点符号化によるデータエンコーディングの簡素化を実現し、トレーニングの安定性を確保します。主な革新点は、「B スプラインの局所性」の利用であり、グリッドセルごとにアクティブとなる基底関数の数が限られているため、ネットワークの次数を増やすことなくグリッドサイズを拡大することでモデルを水平方向にスケール可能になります。得られる枠組みは「KANELÉ」と命名され、従来の実装に対する驚異的な 2,700 倍もの速度向上を達成し、オンデバイスでの動的モデル更新が可能となる真のオンライン学習を実現します。この画期的な成果は、量子コンピューティング制御システムなどリアルタイム意思決定が必要な産業に対し、高効率性と継続的改善を支援する GPU の代替として堅牢な選択肢を提供します。大規模テストにおいて、同システムは関数近似やキュビット読み出しなどのタスクで伝統的な MLP よりも優れたハードウェアスケーリングと収束性を示し、50,000 パラメータまで扱いながらマイクロ秒以下のレイテンシを維持しました。