✅ 主な更新内容: - Python/llvmlite実装の正式採用を明記(開発速度10倍、~2400行) - プラグイン全方向ビルド戦略(.so/.o/.a同時生成)で単一EXE生成可能に - 各実装の予想コード量を具体化(パーサー800行、MIR Builder 2500行、VM 5000行) - 循環依存問題の解決を明記(nyrtがC ABI経由で提供) - 現実的なスケジュール調整(2025年9月~2026年3月) 🎉 最新進捗: - dep_tree_min_string.nyashオブジェクト生成成功(10.4KB) - LLVM verifier green - dominance違反解決 - Resolver patternでSSA安全性確保 🚀 次のマイルストーン: - Python/llvmliteでEXE生成パイプライン完成 - nyash-llvm-compiler分離設計 - NyashパーサーMVP実装開始 Everything is Boxの究極形が、ついに実現へ! 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
1.2 KiB
Bash
41 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Build all plugins in cdylib/staticlib forms and copy artifacts next to Cargo.toml
|
|
|
|
ROOT_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
|
cd "$ROOT_DIR"
|
|
|
|
PROFILE=${PROFILE:-release}
|
|
|
|
echo "[plugins] building all (profile=$PROFILE)"
|
|
|
|
for dir in plugins/*; do
|
|
[[ -d "$dir" && -f "$dir/Cargo.toml" ]] || continue
|
|
pkg=$(grep -m1 '^name\s*=\s*"' "$dir/Cargo.toml" | sed -E 's/.*"(.*)".*/\1/')
|
|
# Determine lib name (prefer [lib].name, else package name with '-' -> '_')
|
|
libname=$(awk '/^\[lib\]/{flag=1;next}/^\[/{flag=0}flag && /name\s*=/{print; exit}' "$dir/Cargo.toml" | sed -E 's/.*"(.*)".*/\1/')
|
|
if [[ -z "${libname}" ]]; then
|
|
libname=${pkg//-/_}
|
|
fi
|
|
echo "[plugins] -> $pkg (libname=$libname)"
|
|
cargo build -p "$pkg" --$PROFILE >/dev/null
|
|
# Copy artifacts
|
|
outdir="target/$PROFILE"
|
|
# cdylib (.so/.dylib/.dll)
|
|
for ext in so dylib dll; do
|
|
f="${outdir}/lib${libname}.${ext}"
|
|
if [[ -f "$f" ]]; then
|
|
cp -f "$f" "$dir/" && echo " copied $(basename "$f")"
|
|
fi
|
|
done
|
|
# staticlib (.a)
|
|
fa="${outdir}/lib${libname}.a"
|
|
if [[ -f "$fa" ]]; then
|
|
cp -f "$fa" "$dir/" && echo " copied $(basename "$fa")"
|
|
fi
|
|
done
|
|
|
|
echo "[plugins] done"
|
|
|