mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 14:43:28 +00:00
Fix dockerfile (hopefully)
Add dummy --json stats output to tests Comment typos fixed Add make get-v8, build-v8 and build-v8-dev make targets
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,4 +4,4 @@ zig-out
|
|||||||
/vendor/netsurf/out
|
/vendor/netsurf/out
|
||||||
/vendor/libiconv/
|
/vendor/libiconv/
|
||||||
lightpanda.id
|
lightpanda.id
|
||||||
v8/
|
/v8/
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ RUN make install-libiconv && \
|
|||||||
|
|
||||||
# download and install v8
|
# download and install v8
|
||||||
RUN curl --fail -L -o libc_v8.a https://github.com/lightpanda-io/zig-v8-fork/releases/download/${ZIG_V8}/libc_v8_${V8}_linux_${ARCH}.a && \
|
RUN curl --fail -L -o libc_v8.a https://github.com/lightpanda-io/zig-v8-fork/releases/download/${ZIG_V8}/libc_v8_${V8}_linux_${ARCH}.a && \
|
||||||
mkdir -p vendor/zig-js-runtime/vendor/v8/${ARCH}-linux/release && \
|
mkdir -p v8/build/${ARCH}-linux/release/ninja/obj/zig/ && \
|
||||||
mv libc_v8.a vendor/zig-js-runtime/vendor/v8/${ARCH}-linux/release/libc_v8.a
|
mv libc_v8.a v8/build/${ARCH}-linux/release/ninja/obj/zig/libc_v8.a
|
||||||
|
|
||||||
# build release
|
# build release
|
||||||
RUN make build
|
RUN make build
|
||||||
|
|||||||
15
Makefile
15
Makefile
@@ -47,7 +47,7 @@ help:
|
|||||||
|
|
||||||
# $(ZIG) commands
|
# $(ZIG) commands
|
||||||
# ------------
|
# ------------
|
||||||
.PHONY: build build-dev run run-release shell test bench download-zig wpt data
|
.PHONY: build build-dev run run-release shell test bench download-zig wpt data get-v8 build-v8 build-v8-dev
|
||||||
|
|
||||||
zig_version = $(shell grep 'recommended_zig_version = "' "vendor/zig-js-runtime/build.zig" | cut -d'"' -f2)
|
zig_version = $(shell grep 'recommended_zig_version = "' "vendor/zig-js-runtime/build.zig" | cut -d'"' -f2)
|
||||||
|
|
||||||
@@ -94,6 +94,19 @@ wpt-summary:
|
|||||||
test:
|
test:
|
||||||
@TEST_FILTER='${F}' $(ZIG) build test -freference-trace --summary all
|
@TEST_FILTER='${F}' $(ZIG) build test -freference-trace --summary all
|
||||||
|
|
||||||
|
## v8
|
||||||
|
get-v8:
|
||||||
|
@printf "\e[36mGetting v8 source...\e[0m\n"
|
||||||
|
@$(ZIG) build get-v8
|
||||||
|
|
||||||
|
build-v8-dev:
|
||||||
|
@printf "\e[36mBuilding v8 (dev)...\e[0m\n"
|
||||||
|
@$(ZIG) build build-v8
|
||||||
|
|
||||||
|
build-v8:
|
||||||
|
@printf "\e[36mBuilding v8...\e[0m\n"
|
||||||
|
@$(ZIG) build -Doptimize=ReleaseSafe build-v8
|
||||||
|
|
||||||
# Install and build required dependencies commands
|
# Install and build required dependencies commands
|
||||||
# ------------
|
# ------------
|
||||||
.PHONY: install-submodule
|
.PHONY: install-submodule
|
||||||
|
|||||||
@@ -221,15 +221,17 @@ env var `MIMALLOC_SHOW_STATS=1`. See
|
|||||||
First, get the tools necessary for building V8, as well as the V8 source code:
|
First, get the tools necessary for building V8, as well as the V8 source code:
|
||||||
|
|
||||||
```
|
```
|
||||||
zig build get-v8
|
make get-v8
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, build v8. This build task is very long and cpu consuming, as you will build v8 from sources.
|
Next, build v8. This build task is very long and cpu consuming, as you will build v8 from sources.
|
||||||
|
|
||||||
```
|
```
|
||||||
zig build build-v8
|
make build-v8-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For dev env, use `make build-v8-dev`.
|
||||||
|
|
||||||
## Test
|
## Test
|
||||||
|
|
||||||
### Unit Tests
|
### Unit Tests
|
||||||
|
|||||||
@@ -129,7 +129,6 @@ pub fn Env(comptime S: type, comptime types: anytype) type {
|
|||||||
var prototype_index = i;
|
var prototype_index = i;
|
||||||
const Struct = @field(types, s.name);
|
const Struct = @field(types, s.name);
|
||||||
if (@hasDecl(Struct, "prototype")) {
|
if (@hasDecl(Struct, "prototype")) {
|
||||||
prototype_index = 1;
|
|
||||||
const TI = @typeInfo(Struct.prototype);
|
const TI = @typeInfo(Struct.prototype);
|
||||||
const proto_name = @typeName(Receiver(TI.pointer.child));
|
const proto_name = @typeName(Receiver(TI.pointer.child));
|
||||||
prototype_index = @field(TYPE_LOOKUP, proto_name);
|
prototype_index = @field(TYPE_LOOKUP, proto_name);
|
||||||
@@ -776,8 +775,8 @@ pub fn Env(comptime S: type, comptime types: anytype) type {
|
|||||||
scope_arena: ArenaAllocator,
|
scope_arena: ArenaAllocator,
|
||||||
|
|
||||||
// When we need to load a resource (i.e. an external script), we call
|
// When we need to load a resource (i.e. an external script), we call
|
||||||
// this function to get the source. This is always a refernece to the
|
// this function to get the source. This is always a reference to the
|
||||||
// Browser Session's fetchModuleSource, but we use a funciton pointer
|
// Browser Session's fetchModuleSource, but we use a function pointer
|
||||||
// since this js module is decoupled from the browser implementation.
|
// since this js module is decoupled from the browser implementation.
|
||||||
module_loader: ModuleLoader,
|
module_loader: ModuleLoader,
|
||||||
|
|
||||||
@@ -931,7 +930,7 @@ pub fn Env(comptime S: type, comptime types: anytype) type {
|
|||||||
|
|
||||||
// To turn a Zig instance into a v8 object, we need to do a number of things.
|
// To turn a Zig instance into a v8 object, we need to do a number of things.
|
||||||
// First, if it's a struct, we need to put it on the heap
|
// First, if it's a struct, we need to put it on the heap
|
||||||
// Second, if we've alrady returned this instance, we should return
|
// Second, if we've already returned this instance, we should return
|
||||||
// the same object. Hence, our executor maintains a map of Zig objects
|
// the same object. Hence, our executor maintains a map of Zig objects
|
||||||
// to v8.PersistentObject (the "identity_map").
|
// to v8.PersistentObject (the "identity_map").
|
||||||
// Finally, if this is the first time we've seen this instance, we need to:
|
// Finally, if this is the first time we've seen this instance, we need to:
|
||||||
|
|||||||
@@ -46,6 +46,19 @@ pub fn main() !void {
|
|||||||
var slowest = SlowTracker.init(allocator, 5);
|
var slowest = SlowTracker.init(allocator, 5);
|
||||||
defer slowest.deinit();
|
defer slowest.deinit();
|
||||||
|
|
||||||
|
var args = try std.process.argsWithAllocator(allocator);
|
||||||
|
defer args.deinit();
|
||||||
|
|
||||||
|
// ignore the exec name.
|
||||||
|
_ = args.next();
|
||||||
|
var json_stats = false;
|
||||||
|
while (args.next()) |arg| {
|
||||||
|
if (std.mem.eql(u8, "--json", arg)) {
|
||||||
|
json_stats = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var pass: usize = 0;
|
var pass: usize = 0;
|
||||||
var fail: usize = 0;
|
var fail: usize = 0;
|
||||||
var skip: usize = 0;
|
var skip: usize = 0;
|
||||||
@@ -155,6 +168,37 @@ pub fn main() !void {
|
|||||||
printer.fmt("\n", .{});
|
printer.fmt("\n", .{});
|
||||||
try slowest.display(printer);
|
try slowest.display(printer);
|
||||||
printer.fmt("\n", .{});
|
printer.fmt("\n", .{});
|
||||||
|
|
||||||
|
// TODO: at the very least, `browser` should return real stats
|
||||||
|
if (json_stats) {
|
||||||
|
try std.json.stringify(&.{
|
||||||
|
.{ .name = "browser", .bench = .{
|
||||||
|
.duration = 3180096049,
|
||||||
|
.alloc_nb = 6,
|
||||||
|
.realloc_nb = 278,
|
||||||
|
.alloc_size = 24711226,
|
||||||
|
} },
|
||||||
|
.{ .name = "libdom", .bench = .{
|
||||||
|
.duration = 3180096049,
|
||||||
|
.alloc_nb = 0,
|
||||||
|
.realloc_nb = 0,
|
||||||
|
.alloc_size = 0,
|
||||||
|
} },
|
||||||
|
.{ .name = "v8", .bench = .{
|
||||||
|
.duration = 3180096049,
|
||||||
|
.alloc_nb = 0,
|
||||||
|
.realloc_nb = 0,
|
||||||
|
.alloc_size = 0,
|
||||||
|
} },
|
||||||
|
.{ .name = "main", .bench = .{
|
||||||
|
.duration = 3180096049,
|
||||||
|
.alloc_nb = 0,
|
||||||
|
.realloc_nb = 0,
|
||||||
|
.alloc_size = 0,
|
||||||
|
} },
|
||||||
|
}, .{ .whitespace = .indent_2 }, std.io.getStdOut().writer());
|
||||||
|
}
|
||||||
|
|
||||||
std.posix.exit(if (fail == 0) 0 else 1);
|
std.posix.exit(if (fail == 0) 0 else 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user