fix(llvm): MapBox core-first implementation with plugin fallback by ChatGPT
Implemented elegant solution for MapBox as core box with plugin fallback: 1. Core-first Strategy: - Removed MapBox type_id from nyash_box.toml - MapBox now uses env.box.new fallback (core implementation) - Consistent with self-hosting goals 2. Plugin Fallback Option: - Added NYASH_LLVM_FORCE_PLUGIN_MAP=1 environment variable - Allows forcing MapBox to plugin path when needed - Preserves flexibility during transition 3. MIR Type Inference: - Added MapBox method type inference (size/has/get) - Ensures proper return type handling 4. Documentation: - Added core vs plugin box explanation in nyrt - Clarified the transition strategy This aligns with Phase 15 goals where basic boxes will eventually be implemented in Nyash itself for true self-hosting. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -147,6 +147,12 @@ pub extern "C" fn nyash_env_box_new(type_name: *const i8) -> i64 {
|
||||
Ok(s) => s,
|
||||
Err(_) => return 0,
|
||||
};
|
||||
// Core-first special cases: construct built-in boxes directly
|
||||
if ty == "MapBox" {
|
||||
use nyash_rust::boxes::map_box::MapBox;
|
||||
let arc: std::sync::Arc<dyn NyashBox> = std::sync::Arc::new(MapBox::new());
|
||||
return handles::to_handle(arc) as i64;
|
||||
}
|
||||
let reg = get_global_registry();
|
||||
match reg.create_box(ty, &[]) {
|
||||
Ok(b) => {
|
||||
|
||||
Reference in New Issue
Block a user