Cm v0.13.1 リリースノート

リリース日: 2026-02-10

✨ ハイライト

v0.13.1は、GPU/Metal対応マルチアーキテクチャビルド標準ライブラリ安定化HTTPS対応リテラル型の完全サポートを含むリリースです。さらにOpenSSLリンカパスのアーキテクチャ対応修正WASMテスト安定化サポート環境の明確化CI環境の固定化を行いました。

主要な変更点


🚀 新機能

GPU/Metal対応

Apple Metal GPUバックエンドによるGPU演算:

import std::gpu::create_context;
import std::gpu::gpu_alloc;
import std::gpu::gpu_compute;

int main() {
    long ctx = create_context();
    long buf_a = gpu_alloc(ctx, a_data, 4);
    long buf_b = gpu_alloc(ctx, b_data, 4);
    gpu_compute(ctx, "vector_add", buf_a, buf_b, buf_out, 4);
    return 0;
}

マルチアーキテクチャビルド

ARCHオプションでターゲットアーキテクチャを指定可能:

make build              # デフォルト(LLVM自動検出)
make build ARCH=arm64   # ARM64ビルド
make build ARCH=x86_64  # x86_64ビルド

HTTPS (TLS) 対応

OpenSSL 3.6.0による暗号化通信:

import std::http::request;

int main() {
    // HTTPS通信
    request("https://example.com", "GET");
    return 0;
}

ジェネリックコンストラクタ/デストラクタ

self()/~self()構文による慣用的なライフサイクル管理:

struct Vector<T> {
    T* data;
    int size;
    int capacity;

    self() {
        this.data = malloc(8 * sizeof(T)) as T*;
        this.size = 0;
        this.capacity = 8;
    }

    ~self() {
        free(this.data as void*);
    }
}

int main() {
    Vector<int> v();  // コンストラクタ自動呼び出し
    v.push(42);
    // スコープ終了時にデストラクタ自動呼び出し
    return 0;
}

標準ライブラリ安定化

std::collections(Vector, Queue, HashMap)

import std::collections::vector::Vector;
import std::collections::hashmap::HashMap;

int main() {
    Vector<int> v();
    v.push(1);
    v.push(2);
    println("size: {v.len()}");  // 2

    HashMap<int, int> m();
    m.set(1, 100);
    return 0;
}

std::sync(Mutex, Channel)

import std::sync::mutex_create;
import std::sync::mutex_lock;
import std::sync::mutex_unlock;

int main() {
    long m = mutex_create();
    mutex_lock(m);
    // クリティカルセクション
    mutex_unlock(m);
    return 0;
}

std::http(HTTP/HTTPS通信)

struct+impl APIデザインによるHTTPクライアント:

import std::http::HttpClient;

int main() {
    HttpClient client();
    client.get("http://example.com");
    return 0;
}

std::core::result

CmResult<T, E>型の実装:

import std::core::result::CmResult;

CmResult<int, string> safe_divide(int a, int b) {
    if (b == 0) {
        return CmResult::Err("Division by zero");
    }
    return CmResult::Ok(a / b);
}

const定数評価拡張

const int OCTAL = 0o777;     // 511
const int FOLDED = 10 * 20;  // コンパイル時評価

リテラル型の関数引数・戻り値サポート

リテラル型が関数の引数・戻り値として完全にサポートされました。 文字列リテラル型は string として、整数リテラル型は int として正しくLLVM IRに変換されます。

typedef HttpMethod = "GET" | "POST" | "PUT" | "DELETE";
typedef StatusCode = 200 | 400 | 404 | 500;

void handle_request(HttpMethod method) {
    println("Method: {method}");
}

HttpMethod get_method() {
    return "GET";
}

🐛 バグ修正

配列リテラル内Union Castの二重生成バグ修正

typedef Value = string | int | bool のようなUnion型の配列リテラルで、要素の値が破壊されるバグを修正しました。

リテラル型の関数引数での文字列値破壊バグ修正

typedef HttpMethod = "GET" | "POST" | ... のような文字列リテラル型を関数引数に渡すとゴミ値が出力されるバグを修正しました。


� ビルド・インフラ改善

OpenSSLリンカパスのアーキテクチャ対応修正

ネイティブビルド時にARM64環境でx86_64版OpenSSLを参照するバグを修正:

WASMテスト安定化

WASMバックエンドで未サポートのネイティブAPIテストに.skipファイルを追加:

サポート環境の明確化

ドキュメントにサポート環境を明記:

OS アーキテクチャ ステータス
macOS 14+ ARM64 (Apple Silicon) ✅ 完全サポート
Ubuntu 22.04 x86_64 ✅ 完全サポート
Windows - ❌ 未サポート

CI環境の固定化

全CIワークフローのOSバージョンとアーキテクチャを明示的に固定:


�📁 主要な変更ファイル

新機能

ファイル 変更内容
std/gpu/mod.cm Metal GPU演算モジュール
std/gpu/gpu_runtime.mm Objective-C++ Metal GPU ランタイム
std/http/mod.cm HTTP/HTTPS通信モジュール
std/http/http_runtime.cpp HTTP通信ランタイム(OpenSSL統合)
std/sync/mod.cm Mutex/Channel同期プリミティブ
std/collections/ Vector/Queue/HashMap(self()/~self())
std/core/result.cm CmResult<T, E>型

バグ修正

ファイル 変更内容
src/mir/lowering/base.hpp LiteralUnion→基底型変換追加
src/mir/lowering/context.hpp 同上(LoweringContext版)
src/mir/lowering/expr_basic.cpp 配列リテラルのelem_type解決修正
src/codegen/llvm/core/mir_to_llvm.cpp Union Castの安全性改善

ビルドシステム

ファイル 変更内容
CMakeLists.txt ARM64自動検出、LLVM/OpenSSLパス
Makefile マルチアーキテクチャ自動環境設定
src/codegen/llvm/native/target.hpp ARM64トリプル対応
src/codegen/llvm/native/codegen.hpp OpenSSLパスのアーキテクチャ対応、ARM64フラグ

CI

ファイル 変更内容
.github/workflows/*.yml macos-14/ubuntu-22.04固定、CM_TARGET_ARCH追加

チュートリアル

ファイル 変更内容
docs/tutorials/ja/types/typedef.md リテラル型セクション拡充
docs/tutorials/en/types/typedef.md 同上(英語版)
docs/tutorials/ja/stdlib/* 標準ライブラリチュートリアル追加
docs/tutorials/ja/internals/* コンパイラ内部ドキュメント追加

🧪 テスト状況

カテゴリ 通過 失敗 スキップ
JIT (O0) 363 0 9

v0.13.0からの新規テスト (+12):


📊 統計


🔮 今後の予定


📝 謝辞

このリリースは、ARM64ネイティブ対応、GPU演算、リテラル型完全サポートという大きな技術的目標を達成しました。