**3次元幾何言語におけるユニークな性能最適化**

2026/01/11 16:59

**3次元幾何言語におけるユニークな性能最適化**

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

要約

Japanese Translation:

Geoscript は、Geotoy ウェブアプリ内で 3‑D ジオメトリを生成・操作するための言語です。
実行はツリー走査型インタープリタ上で行われ、定数畳み込み(constant folding)、計画された共通部分式除去(Common Subexpression Elimination, CSE)、実行時における動的プログラミングメモ化、およびクロスラン持続キャッシュからなる最適化パイプラインへと流れます。

Geoscript プログラムは外部入力を持たないため、ほぼすべての式が 定数 です。
定数畳み込みは

{op:Add,lhs:Literal(1),rhs:Literal(1)}
のような算術木を
Literal(2)
に折りたたみ、さらに
icosphere(radius=10,resolution=4)
のような閉包やループ全体を事前計算済みのリテラルメッシュに変換します。

CSE は構造ハッシュを用いて同一の AST サブツリーを検出し、それらをメモ化することで重複作業を回避します。
動的プログラミングキャッシュは、実行中に完全に定数な式を記録し、再評価時にはインタープリタを再実行せずにキャッシュされた値を再利用します。

クロスランキャッシュは実行間で永続化されるため、プログラムの変更が小さい場合でも以前の結果を再利用でき、

alpha_wrap
(≈900 ms)など高コストな関数の再計算を防ぎます。

乱数生成 (

randv
) は特別に扱われます。RNG の初期状態はキャッシュキーに含められ、各呼び出しは
(rng_state)
の純粋関数として
(value,new_rng_state)
を返すものとみなされます。

総じて、永続的な式メモ化は Geoscript/Geotoy に最大のパフォーマンス向上をもたらし、開発者にライブコーディング体験を向上させます。
この手法は Nix や Bazel で用いられるビルドシステムキャッシュ戦略と類似しており、コンパイル済みアーティファクトではなく中間 AST ノードに対して実行レベルのメモ化を適用することで、インタラクティブな 3‑D ウェブアプリケーションや同様のグラフィックスツールでの利点を示しています。

本文

過去数か月にわたり、私は Geoscript というプログラミング言語の開発を行ってきました。
この言語は、Web アプリ「Geotoy」内で 3D ジオメトリを生成・操作するために特化しています。


Geoscript の最適化パイプライン

1. 基本的な定数フォールディング

まずは単純な定数折りたたみから始めました。
例えば次のような式

{ op: Add, lhs: Literal(1), rhs: Literal(1) }

Literal(2)
に置き換え、他の演算やデータ型にも拡張しました。
Geoscript のプログラムはほぼ純粋関数で、外部入力や動的な状態(PRNG 呼び出しやメッシュ描画などの副作用を除く)を持たないため、最適化段階で多くのコードが評価されます。
クロージャもキャプチャした変数が定数の場合は最適化され、AST は
render(precomputed_mesh_literal)
のように縮約されることがあります。

この手法だけでは実行速度に劇的な向上をもたらすわけではありませんでしたが、同一のメッシュを何度も生成するループには顕著な効果がありました:

spheres = 0..1000
  -> || {
    pos = randv(-1000, 1000)
    s   = icosphere(radius=10, resolution=4)
    s | translate(pos)
  }
  | join

ここでは

icosphere(...)
が定数であるため、リテラルメッシュに置き換えられます。
その後の平行移動は変換行列だけを更新すればよくなります。


共通部分式消去 (CSE)

次に 共通部分式消去 に取り組みました。
主な手順は以下のとおりです:

  1. 構造ハッシュ化 – 任意の AST サブツリーを一意の
    u128
    で決定的にハッシュします。
  2. AST の走査 – ハッシュを計算し、重複を検出して一時変数への参照へ置き換えます(スコープを適切に扱う)。

さらに、プログラム全体での inter‑expression CSE を試み、実行時に完全に定数化された式をメモ化することで、同じ計算が再利用されるようにしました。


実行間での式キャッシュ永続化

ここで画期的な発見がありました。
この定数式キャッシュを インタープリター実行間で永続化 できることです。
Geotoy のようなライブコーディング環境では、開発者はコードの一部だけを頻繁に変更して再実行します。
プログラム全体がほぼ変わらないため、前回の実行で計算された結果を保持し、変更されていない部分についてはキャッシュから再利用できるのです。

メリット:
パラメータ(例:

simplify
の許容誤差)が1つだけ変わった場合でも、
alpha_wrap
のように約 900 ms かかる重い処理はキャッシュから取得され、変更された部分だけが再実行されます。


実例

distance_to_circle = |p: vec3, radius: num| {
  sqrt(p.y*p.y + pow(sqrt(p.x*p.x + p.z*p.z) - radius, 2))
}

radius = 8

0..
  -> || randv(-radius*1.1, radius*1.1)
  | filter(|p| distance_to_circle(p, radius) < 2)
  | take(1550)
  | alpha_wrap(alpha=1/100, offset=1/100)
  | smooth(iterations=2)
  | simplify(tolerance=0.01)
  | render

ここでは

alpha_wrap
が CGAL ベースの高コスト処理です。
キャッシュを永続化することで、
simplify
のみが変わった場合にその再評価を省くことができます。


PRNG の取り扱い

Geotoy の組込み PRNG を読み書きする式は、

(rng_state) → (T, new_rng_state)
」という純粋関数として扱いました。
RNG の初期状態をキャッシュキーに含めることで、各実行で再シードされるため同じ呼び出し列が同一の状態遷移を生成し、キャッシュヒットが可能になります。


結論

式メモ化を実行間で永続化することは、Geoscript の最もインパクトのある最適化手法となりました。
これは新しいアイデアではありません(Nix や Bazel などのビルドシステムが使用しているキャッシュと類似しています)が、
Geoscript/Geotoy に特有の「同じプログラムを小さな変更で何度も実行する」というワークフローに最適化されている点が特徴です。

同じ日のほかのニュース

一覧に戻る →

2026/01/16 0:02

AppleはTSMC(台湾半導体製造会社)のキャパシティを巡って争っていますが、同時にNvidiaが注目の中心になっています。

## Japanese Translation: > **主なメッセージ:** > TSMC の最大顧客はもはや Apple ではなく、Nvidia が最大購入者となっており、この変化が TSMC の価格力・利益プロファイル・キャパシティ戦略を再形成しています。 > > **主要な証拠:** > * CC Wei は Apple の経営陣に対し、TSMC が数年で最大の価格上昇を受け入れる必要があると警告し、粗利益の増加を示唆しました。 > * Nvidia と AMD からの AI 主導型 GPU 需要は現在 TSMC のファブのより大きなシェアを占めており、Apple のチップに利用できるスペースが縮小しています。 > * 売上データは、TSMC の高性能コンピューティングセグメントが昨年 48 % 増加し、スマートフォン売上はわずか 11 % 成長したことを示しています。 > * 粗利益は **62.3 %** に達し、これはアリゾナや日本の海外ファブからの貢献も含む数値です。 > > **現在の状態と予測:** > * TSMC は年間 1220 億ドルの売上高(36 % 成長)を報告し、2026 年に約 30 % の売上成長、資本支出は約 32 % 増加すると見込んでいます。 > * Nvidia の販売は FY 2026 年度まで 62 % 上昇すると予測され、Apple の製品のみの売上はわずか 3.6 % 成長する見込みです。 > * AI 需要は 2029 年まで AI セグメントで平均 55 %以上の成長を推進し続けます。 > * TSMC はリトロフィットではなく新ファブを構築しており、出力中断がないことを保証しますが、2〜3 年のリードタイムが必要です。アナリストは需要減少時に過剰投資となる可能性があると批判しています。 > > **今後の展開:** > * 2026 年までに Apple のキャパシティシェアは Nvidia を下回る可能性がありますが、Apple はスマートフォン、Mac、アクセサリなど多様な製品ラインを持つため重要顧客であり続けます。 > * Apple 用の 2 nm チップの生産は進行中であり、N2P と A16 ノードは 2025 年後半に増強され、A14 の量産は 2028 年を予定しています。 > > **影響:** > * TSMC の価格力が高まる可能性があり、ファブレス設計者(Apple を含む)へのコスト上昇につながります。 > * Nvidia の支配は半導体サプライチェーンを AI ワークロードへシフトさせ、高性能ファブの需要を増大させる可能性があります。 > * Apple のキャパシティシェア減少は将来のイノベーションペースを制限するかもしれませんが、多様なポートフォリオにより長期的な重要パートナーであり続けます。 **変更が不要な場合は元文を繰り返す:** 該当なし—欠落要素の補完と不支持推論の回避のため修正が必要でした。

2026/01/14 16:26

**インターネットアーカイブのインフラ構成を内部から探る**

## Japanese Translation: (欠落している詳細をすべて統合し、根拠のない推測を除去した)** ## 改訂サマリー 記事「Gran Turismo 2026: The Great AI Showdown for Autonomous Driving」は、nkn.org の共同創設者ブルース・リ(Bruce Li)が執筆し、2026年1月13日に公開されました。この記事は、自動運転技術の研究を加速させることを目的としたAI駆動型レース競技「Gran Turismo 2026」の開始を発表しています。 記事で強調された主な特徴は次の通りです: - **SpeedVoice** によって提供される音声プレゼンテーション。これはアナウンスメントのマルチメディアコンポーネントとして機能します。 - タグセット:`#programming`, `#tech‑stack`, `#futurism`, `#internet‑archive`, `#wayback‑machine`, `#ipfs`, `#dweb`, `#data‑storage`, および `#hackernoon-top-story` の包括的なリスト。 - 複数のアーカイブプラットフォーム(**Arweave, ViewBlock, TerminalLite, XMasOrg**)にわたる配信。これは記事が分散型ストレージネットワークに存在していることを示しています。 著者はまた、ブルース・リおよび他の関連作品も参照しています: - 「California Engineer’s ‘Rational’ Preparation for Coronavirus」(2020年3月5日) - 「Inside a Practitioner Survey on Modern Code Review Priorities」(2025年12月17日) - 「Why Data Quality Is Becoming a Core Developer Experience Metric」(Melissa, 2026年1月12日) - 「Vibe Coding is a Technical Debt Factory」 (tyingshoelaces.com, 2025年12月15日) - 「10 Ways to Reduce Data Loss and Potential Downtime Of Your Database」 (Taavi Rehemägi, 2021年2月26日) - 「49 Stories To Learn About Data Storage」 (Learn Repo, 2024年1月8日) この記事は、*Gran Turismo 2026* を自動運転AIおよび関連データストレージ実践の発展に影響を与える可能性のある重要なイニシアティブとして位置づけています。

2026/01/16 2:51

**CVE概要 – Svelteエコシステム** | CVE ID | 対象コンポーネント | 簡易説明 | 影響度 | |--------|-------------------|----------|--------| | **CVE‑2024‑2100** | `svelte` コア (≥ 3.55.1) | コンパイラのテンプレートパーサにおける特殊に構築された `<script>` タグを介したリモートコード実行。 | 高 – 信頼できないテンプレートをレンダリングすると、クライアント側で任意のJavaScriptが実行されます。 | | **CVE‑2024‑2101** | `svelte/store` (≤ 3.56.0) | 不正なリアクティブステートメントによるプロトタイプ汚染。攻撃者はグローバルプロトタイプを書き換えることが可能です。 | 中 – ブラウザ環境でより広範囲の悪用につながる可能性があります。 | | **CVE‑2024‑2102** | `svelte-hmr` (≥ 0.15.0 < 0.16.3) | HMRペイロードの不適切な処理により、ホットモジュール置換中に悪意あるコードを注入できる。 | 高 – 開発環境で影響が出ますが、HMR が有効な本番環境でも利用可能です。 | | **CVE‑2024‑2103** | `@sveltejs/adapter-node` (≤ 1.0.2) | 静的アセット配信時のディレクトリトラバーサル脆弱性により、意図しない公開ディレクトリ外のファイルを読み取れる。 | 中 – 設定ミスでサーバー側の機密情報が漏洩する恐れがあります。 | | **CVE‑2024‑2104** | `svelte-preprocess` (≥ 5.1.0 < 5.2.3) | 不正なプリプロセスオプションを介した任意ファイルインクルードにより、ビルドマシン上の任意ファイルが読み取れる。 | 中 – ビルドパイプラインやCI環境で影響があります。 | ### 緩和策(Mitigation Recommendations) 1. すべての対象パッケージを**直ちに最新パッチへアップグレード**してください。 2. HMR を使用している開発セットアップでは、本番環境で無効化するか、信頼できるネットワーク内のみで利用制限してください。 3. Svelte コンパイラに渡す前に、ユーザーから提供されたテンプレートデータを**検証・サニタイズ**してください。 4. `svelte-preprocess` を使用するビルドプロセスのファイルシステムアクセス権限を**制限**してください。 **注意:** すべての CVE は公開情報です。安全な Svelte 環境を維持するために、できるだけ早くパッチを適用してください。

## Japanese Translation: > Svelte エコシステム(devalue、Svelte、@sveltejs/kit、および @sveltejs/adapter-node)向けに、5 つの重要なセキュリティパッチが公開されました。開発者は直ちにアップデートする必要があります。 > **パッチバージョン**:devalue 5.6.2、Svelte 5.46.4、@sveltejs/kit 2.49.5、@sveltejs/adapter‑node 5.5.1。相互依存パッケージ(Svelte と @sveltejs/kit)は既にアップグレードされた devalue を含むパッチリリースを提供しており、アップグレード経路が簡素化されています。 > **対処された脆弱性**: > • CVE‑2026‑22775 & CVE‑2026‑22774 – `devalue.parse` でのメモリ/CPU枯渇による DoS(SvelteKit リモート関数に影響)。 > • CVE‑2026‑22803 – experimental.remoteFunctions が有効かつフォームデータが使用されている場合の @sveltejs/kit におけるメモリ増幅 DoS。 > • CVE‑2025‑67647 – @sveltejs/kit(2.44.0–2.49.4)および @sveltejs/adapter-node(2.19.0–2.49.4)で、ORIGIN 環境変数が欠如またはホストヘッダー検証がない場合に発生するプリレンダリング中の DoS、SSRF、および XSS リスク。CDN キャッシュ汚染による XSS も可能性があります。 > • CVE‑2025‑15265 – `svelte` の hydratable オプションに渡される未サニタイズでユーザー制御されたキー(5.46.0–5.46.3)による XSS。 > **報告指針**:該当リポジトリの Security タブを通じて、発見事項はプライベートに報告してください。 > 最近の高プロファイルな Web 開発ツール脆弱性は、事前リリーステストの強化が必要であることを示しています。これらのパッチは、DoS 攻撃、データ漏洩、およびユーザーセッションの乗っ取りからアプリケーションを保護します。