Karl Seguin
87d48b028b
Merge pull request #992 from lightpanda-io/http_buffer_presize
...
Pre-size the destination buffer when we know the response content length
2025-09-02 06:51:15 +08:00
Karl Seguin
785a8da623
remove content-length limit
2025-09-01 18:53:00 +08:00
Karl Seguin
57dc303d90
Make getContentLength work on fulfilled responses
2025-09-01 18:40:50 +08:00
Pierre Tachoire
ce08cc9659
Merge pull request #993 from lightpanda-io/remove_unsafe_undefine
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
Remove [some] unsafe undefines from netsurf wrapper
2025-09-01 08:26:41 +02:00
Pierre Tachoire
866393743c
Merge pull request #991 from lightpanda-io/mimalloc_assertions
...
Switch mimalloc guards to assertions
2025-09-01 08:12:21 +02:00
Pierre Tachoire
ba255aa653
Merge pull request #989 from lightpanda-io/clocks
...
Improve clocks
2025-09-01 08:11:05 +02:00
Karl Seguin
6c41245c73
Remove [some] unsafe undefines from netsurf wrapper
...
Code like this:
```
var body: ?*ElementHTML = undefined;
const err = documentHTMLVtable(doc_html).get_body.?(doc_html, &body);
try DOMErr(err);
if (body == null) return null;
return @as(*Body, @ptrCast(body.?));
```
Isn't safe. It assumes that libdom will either return an error, or set body
to null or a value. However, there are cases (specifically for this API) where
libdom returns DOM_NO_ERR without ever setting body. In such cases, we return
a `body` initialized to a random (invalid) value.
This PR replaces the initial value of optional types from undefined to null
(within the libdom wrapper).
2025-09-01 11:41:37 +08:00
Karl Seguin
2a8e51c2d2
Pre-size the destination buffer when we know the response content length
2025-08-31 20:14:55 +08:00
Karl Seguin
b2cf5df612
Switch mimalloc guards to assertions
...
The thin mimalloc API is currently defensive around incorrect setup/teardown by
guarding against using/destroying the arena when the heap is null, or creating
an arena when it already exists.
The only time these checks will fail is when the code is wrong, e.g. trying
to use libdom before or after freeing the arena. The current behavior can mask
these errors, plus add runtime overhead.
2025-08-31 19:35:53 +08:00
Karl Seguin
ada9ddd5b8
Improve clocks
...
There's a flaky performance test that I wanted to fix (1). This led to a couple
changes.
1 - Add timestamp() and milliTimestamp() to datetime.zig. Reduce some code
duplication and use better clock_ids where available
2 - Change Performance API to use milliTimestamp and store a u64 instead of a
f64. While the spec says a float, Firefox deals with u64 and implicit
conversion is always available. Makes our APIs simpler.
(1) - https://github.com/lightpanda-io/browser/actions/runs/17313296490/job/49151366798#step:4:131
2025-08-30 13:45:12 +08:00
Karl Seguin
f66f4d9aeb
Merge pull request #987 from lightpanda-io/improve_server_shutdown
...
e2e-test / zig build release (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Ignore ConnectionClosed error on server shutdown
2025-08-30 12:35:12 +08:00
Pierre Tachoire
d02ba777f2
Merge pull request #984 from lightpanda-io/zig.0.15.1
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Zig 0.15.1
2025-08-29 10:33:00 +02:00
Karl Seguin
aef614823b
Ignore ConnectionClosed error on server shutdown
...
Our shutdown could be cleaner, but this at least removes a meaningless (because
we're shutting down) log.err that was happening on every test run.
2025-08-29 16:21:26 +08:00
Karl Seguin
431db85ecb
Merge pull request #978 from lightpanda-io/dynamic_cdp_read_buffer
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
Make the CDP read buffer heap allocated & dynamic
2025-08-29 12:20:58 +08:00
Karl Seguin
1ebac06f4b
add debug line on cdp buffer growth
2025-08-29 10:55:36 +08:00
Karl Seguin
23d6362058
fix telemetry, link libc and libcpp
2025-08-29 10:42:06 +08:00
Karl Seguin
1443f38e5f
Zig 0.15.1
...
Depends on https://github.com/lightpanda-io/zig-v8-fork/pull/89
2025-08-29 10:42:06 +08:00
Karl Seguin
efc983b009
Start with 16K buffer (down from 32K). Use array list growth algorithm
2025-08-29 10:33:27 +08:00
Karl Seguin
74d90f2892
fix tests
2025-08-29 10:14:59 +08:00
Karl Seguin
56f1b6cc19
Make the CDP read buffer heap allocated & dynamic
...
Rather than stack-allocating MAX_MESSAGE_SIZE upfront, we now allocate 32KB
and grow the buffer as needed for larger messages, up to MAX_MESSAGE_SIZE.
This will reduce memory usage for drivers that don't send huge payloads (like
playwright does).
While not implemented, this would also enable us to set the MAX_MESSAGE_SIZE
at runtime (e.g. via a command line option).
2025-08-29 10:14:58 +08:00
Karl Seguin
fa2cd9dfd9
Ability to start/stop CDP server.
...
Exists for cleaning up after tests.
2025-08-29 10:14:08 +08:00
Karl Seguin
687f09d952
Make the App own the Platform
...
Removes optional platform, which only existed for tests.
There is now a global `@import("testing.zig").test_app` available. This is setup
when the test runner starts, and cleaned up at the end of tests. Individual
tests don't have to worry about creating app, which I assume was the reason I
Platform optional, since that woul dhave been something else that needed to be
setup.
2025-08-29 10:14:06 +08:00
Karl Seguin
67b479b5c8
Merge pull request #983 from lightpanda-io/sigint
...
exit the browser on SIGINT signal
2025-08-29 10:10:49 +08:00
Pierre Tachoire
b80ee3342c
http: set content_type len on fulfill request
2025-08-28 16:28:41 +02:00
Pierre Tachoire
4c7b7b1e60
handle graceful shutdown
2025-08-28 12:44:16 +02:00
Pierre Tachoire
1a4a3608c8
exit the browser on SIGINT signal
2025-08-28 12:44:12 +02:00
Pierre Tachoire
6800d50339
Merge pull request #981 from lightpanda-io/page-navigate-event
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
page: ensure page navigate events order
2025-08-27 18:23:22 +02:00
Pierre Tachoire
036f808ec6
page: ensure page navigate events order
2025-08-27 17:36:36 +02:00
Pierre Tachoire
7647ce9e6d
Merge pull request #960 from lightpanda-io/auth-challenge
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
auth required interception
2025-08-27 15:34:51 +02:00
Karl Seguin
545d3f81ce
Merge pull request #977 from lightpanda-io/selector_by_ref
...
Select is relatively large (64 bytes), pass it by ref
2025-08-27 19:37:36 +08:00
Karl Seguin
b8fc60df45
Merge pull request #975 from lightpanda-io/dynamic_script
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
Support dynamic scripts which are added to the DOM before src is set
2025-08-27 05:59:28 +08:00
Karl Seguin
c6455cf02e
Select is relatively large (64 bytes), pass it by ref
2025-08-27 05:55:04 +08:00
Pierre Tachoire
2ac1d39367
Merge pull request #976 from lightpanda-io/webapi_file_placeholder
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
The most basic File implementation.
2025-08-26 18:20:53 +02:00
Pierre Tachoire
041e014d68
Merge pull request #970 from lightpanda-io/remove_loop
...
Remove the loop
2025-08-26 18:17:32 +02:00
Pierre Tachoire
5defb5c442
http: build headers when auth challenge fails
2025-08-26 18:05:45 +02:00
Pierre Tachoire
520a572bb4
http: add reset and tries for transfer
2025-08-26 18:05:45 +02:00
Pierre Tachoire
4c602256da
http: remove useless field
2025-08-26 18:05:45 +02:00
Pierre Tachoire
5a40cbd655
cdp: use enum for AuthChallengeResponse
2025-08-26 18:05:45 +02:00
Pierre Tachoire
a75f9dd48d
cdp: set default username/passwd for authChallengeResponse
2025-08-26 18:05:44 +02:00
Pierre Tachoire
6b47aa2446
cdp: add auth required interception process
2025-08-26 18:05:44 +02:00
Pierre Tachoire
a847a1faae
http: replace _forbidden with _auth_challenge struct
2025-08-26 18:05:44 +02:00
Pierre Tachoire
bb381e522c
http: add creds into request
2025-08-26 18:05:39 +02:00
Karl Seguin
6962cfb91a
Merge pull request #973 from lightpanda-io/no-body-response
...
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
Handle response without body
2025-08-26 18:44:22 +08:00
Pierre Tachoire
302c50a90e
Merge pull request #964 from lightpanda-io/proxy-header
...
http: refacto headerCallback and get proxy CONNECT request details
2025-08-26 10:53:43 +02:00
sjorsdonkers
e2d47e1c86
fix merge conflict
2025-08-26 10:12:07 +02:00
Karl Seguin
c7674926c3
The most basic File implementation.
...
Almost silly as-is, but handles this case:
```
if (input instanceof File) {
throw Error('file not supported')
}
```
as seen on reddit.
2025-08-26 13:25:30 +08:00
Karl Seguin
f0ca9728ae
Support dynamic scripts which are added to the DOM before src is set
...
This should load the "src.js":
```
const s = document.createElement('script');
document.getElementsByTagName('body')[0].appendChild(s);
s.src = "src.js"
```
Notice that src is set AFTER the element is added to the DOM. This PR enables
the above, by
1 - skipping dynamically added scripts which don't have a src
2 - trying to load a script whenever `set_src` is called.
(2) is safe because the ScriptManager already prevents scripts from being
processed multiple times.
Additionally, not only can the src be set after the script is added to the DOM,
but onload and onerror can be set after the src:
```
s.src = "src.js"
s.onload = ...;
s.onerror = ...;
```
This PR also delays reading the onload/onerror callbacks until the script is
done loading.
This behavior is seen on reddit.
2025-08-26 13:10:55 +08:00
Karl Seguin
5fa8567801
Removes the log for unknown script tags
...
Some sites have a lot of text/template or application/json, and it just adds
noise to the logs.
2025-08-26 08:48:29 +08:00
sjorsdonkers
e5b1acb6e1
Handle response without body
2025-08-25 18:07:02 +02:00
Karl Seguin
8fdbaef4c7
Use posix.TCP.NODELAY now that it's available in MacOS also
2025-08-25 22:03:58 +08:00