Merge branch 'master' of ssh://git.sideros.org:/git/sideros

This commit is contained in:
Lorenzo Torres 2025-03-28 19:57:19 +01:00
commit 669b8e5fee
4 changed files with 540 additions and 548 deletions

View file

@ -33,12 +33,11 @@ pub fn main() !void {
//var runtime = try mods.Runtime.init(allocator, module, &global_runtime);
//defer runtime.deinit(allocator);
//var parameters = [_]usize{};
//var parameters = [_]usize{17};
//try runtime.callExternal(allocator, "preinit", &parameters);
var w = try Renderer.Window.create(800, 600, "sideros");
defer w.destroy();
// TODO(luccie-cmd): Renderer.create shouldn't return an error
var r = try Renderer.create(allocator, w);
defer r.destroy();
@ -51,15 +50,18 @@ pub fn main() !void {
var pool = try ecs.Pool.init(allocator, resources);
defer pool.deinit();
w.setResources(&pool.resources);
//try pool.addSystemGroup(&[_]entities.System{
// testSystem,
//});
// try pool.addSystemGroup(&[_]ecs.System{
// testSystem2,
// });
_ = try pool.createEntity(ecs.entities.Human{
.position = .{ .x = 0.0, .y = 1.0, .z = 0.0 },
.speed = .{ .speed = 5.0 },
});
try pool.addSystemGroup(&[_]ecs.System{
testSystem2,
});
// for (0..1000) |_| {
// const entity = try pool.createEntity();
// try pool.addComponent(entity, ecs.components.Position{ .x = 1.0, .y = 0.5, .z = 3.0 });
// try pool.addComponent(entity, ecs.components.Speed{ .speed = 5.0 });
// }
while (!w.shouldClose()) {
Renderer.Window.pollEvents();

View file

@ -448,6 +448,7 @@ fn parseElemsec(self: *Parser) !void {
pub const Func = struct {
locals: []Valtype,
code: []const u8,
ir: IR,
};
const Local = struct {
n: u32,
@ -477,6 +478,7 @@ fn parseCode(self: *Parser) !Func {
const func = Func{
.locals = try self.allocator.alloc(Valtype, local_count),
.code = &.{},
.ir = ir,
};
var li: usize = 0;

View file

@ -7,41 +7,41 @@ pub const IR = @import("ir.zig");
pub const GlobalRuntime = Wasm.GlobalRuntime;
pub const Runtime = VM.Runtime;
const std = @import("std");
// const std = @import("std");
test "Fibonacci" {
// var gpa = std.heap.GeneralPurposeAllocator(.{}){};
// const allocator = gpa.allocator();
const allocator = std.testing.allocator;
var global_runtime = GlobalRuntime.init(allocator);
defer global_runtime.deinit();
// test "Fibonacci" {
// // var gpa = std.heap.GeneralPurposeAllocator(.{}){};
// // const allocator = gpa.allocator();
// const allocator = std.testing.allocator;
// var global_runtime = GlobalRuntime.init(allocator);
// defer global_runtime.deinit();
const file = try std.fs.cwd().openFile("assets/core.wasm", .{});
const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB
var parser = Parser{
.bytes = all,
.byte_idx = 0,
.allocator = allocator,
};
const module = parser.parseModule() catch |err| {
std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] });
return err;
};
var runtime = try Runtime.init(allocator, module, &global_runtime);
defer runtime.deinit(allocator);
// const file = try std.fs.cwd().openFile("assets/core.wasm", .{});
// const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB
// var parser = Parser{
// .bytes = all,
// .byte_idx = 0,
// .allocator = allocator,
// };
// const module = parser.parseModule() catch |err| {
// std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] });
// return err;
// };
// var runtime = try Runtime.init(allocator, module, &global_runtime);
// defer runtime.deinit(allocator);
var parameters = [_]usize{17};
try runtime.callExternal(allocator, "preinit", &parameters);
const result = runtime.stack.pop().?;
try std.testing.expect(result.i64 == 1597);
// var parameters = [_]usize{17};
// try runtime.callExternal(allocator, "preinit", &parameters);
// const result = runtime.stack.pop().?;
// try std.testing.expect(result.i64 == 1597);
var parameters2 = [_]usize{1};
try runtime.callExternal(allocator, "preinit", &parameters2);
const result2 = runtime.stack.pop().?;
try std.testing.expect(result2.i64 == 1);
// var parameters2 = [_]usize{1};
// try runtime.callExternal(allocator, "preinit", &parameters2);
// const result2 = runtime.stack.pop().?;
// try std.testing.expect(result2.i64 == 1);
var parameters3 = [_]usize{5};
try runtime.callExternal(allocator, "preinit", &parameters3);
const result3 = runtime.stack.pop().?;
try std.testing.expect(result3.i64 == 5);
}
// var parameters3 = [_]usize{5};
// try runtime.callExternal(allocator, "preinit", &parameters3);
// const result3 = runtime.stack.pop().?;
// try std.testing.expect(result3.i64 == 5);
// }

File diff suppressed because it is too large Load diff