Phase 11-12: LLVM backend initial, semantics layer, plugin unification
Major changes: - LLVM backend initial implementation (compiler.rs, llvm mode) - Semantics layer integration in interpreter (operators.rs) - Phase 12 plugin architecture revision (3-layer system) - Builtin box removal preparation - MIR instruction set documentation (26→Core-15 migration) - Cross-backend testing infrastructure - Await/nowait syntax support New features: - LLVM AOT compilation support (--backend llvm) - Semantics layer for interpreter→VM flow - Tri-backend smoke tests - Plugin-only registry mode Bug fixes: - Interpreter plugin box arithmetic operations - Branch test returns incorrect values Documentation: - Phase 12 README.md updated with new plugin architecture - Removed obsolete NYIR proposals - Added LLVM test programs documentation Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -103,8 +103,14 @@ pub extern "C" fn nyash_plugin_invoke(
|
||||
if let Ok(mut map) = INSTANCES.lock() {
|
||||
if let Some(inst) = map.get_mut(&instance_id) {
|
||||
let i = idx as usize;
|
||||
if i >= inst.data.len() { return NYB_E_INVALID_ARGS; }
|
||||
inst.data[i] = val;
|
||||
let len = inst.data.len();
|
||||
if i < len {
|
||||
inst.data[i] = val;
|
||||
} else if i == len {
|
||||
inst.data.push(val);
|
||||
} else {
|
||||
return NYB_E_INVALID_ARGS;
|
||||
}
|
||||
return write_tlv_i64(inst.data.len() as i64, result, result_len);
|
||||
} else { return NYB_E_INVALID_HANDLE; }
|
||||
} else { return NYB_E_PLUGIN_ERROR; }
|
||||
|
||||
Reference in New Issue
Block a user