llhttp
wpt
llhttp | wpt | |
---|---|---|
7 | 20 | |
1,586 | 4,632 | |
0.6% | 1.0% | |
8.7 | 10.0 | |
5 days ago | 5 days ago | |
TypeScript | HTML | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
llhttp
-
Notes: Advanced Node.js Concepts by Stephen Grider
In the source code of the Node.js opensource project, lib folder contains JavaScript code, mostly wrappers over C++ and function definitions. On the contrary, src folder contains C++ implementations of the functions, which pulls dependencies from the V8 project, the libuv project, the zlib project, the llhttp project, and many more - which are all placed at the deps folder.
-
Rest server for embedded system
Some useful libraries include nghttp2 for HTTP/2 and llhttp for HTTP/1.1. Both are network stack and TLS implementation agnostic.
-
Does nodejs intercept http request natively or does it use something to understand http request like wsgi in python ?
There is a HTTP parser directly bundled in node (https://github.com/nodejs/llhttp)
-
Fetch API has landed into Node.js
Those wasm blobs are Node's own llhttp https://github.com/nodejs/llhttp in wasm to speed up HTTP parsing.
The question is totally legitimate but please assume core doesn't make "load random binary" level kind of goofs :)
-
Book recommendations for Backend development concepts for a beginner
For HTTP, you have to look at HTTP parser. For example, https://github.com/nodejs/llhttp is used in NodeJS.
-
The history and reasons behind CORS, and how to use it
Whoa, I didn't know that! But yeah, it seems like https://github.com/nodejs/http-parser is based on nginx. It now uses https://github.com/nodejs/llhttp but has some of the same legacy.
On the other hand, deno's HTTP stuff is built on top of Hyper, a Rust library https://github.com/hyperium/hyper
-
Show HN: Micro HTTP server in 22 lines of C
No, parsing HTTP/1.x is a nightmare and definitely not simple. It wasn't even particularly well defined until 2014 when the original RFCs were modernized, and even now there are bugs reported in HTTP parsers all the time.
Node.js came out in 2009, a full ten years after HTTP/1.1 (RFC 2068) and it's original http-parser is full-on spaghetti code, doesn't conform to the RFCs for performance reasons, and is considered unmaintainable by the author of it's replacement[0]
[0] https://github.com/nodejs/llhttp
wpt
-
Show HN: Dropflow, a CSS layout engine for node or <canvas>
To reply mostly with my WPT Core Team hat off, mostly summarising the history of how we've ended up here:
A build script used by significant swaths of the test suite is almost certainly out; it turns out people like being able to edit the tests they're actually running. (We _do_ have some build scripts — but they're mostly just mechanically generating lots of similar tests.
A lot of the goal of WPT (and the HTML Test Suite, which it effectively grew out of) has been to have a test suite that browsers are actually running in CI: historically, most standards test suites haven't been particularly amenable to automation (often a lot of, or exclusively, manual tests, little concern for flakiness, etc.), and with a lot of policy choices that effectively made browser vendors choose to write tests for themselves and not add new tests to the shared test suite: if you make it notably harder to write tests for the shared test suite, most engineers at a given vendor are simply going to not bother.
As such, there's a lot of hesitancy towards anything that regresses the developer experience for browser engineers (and realistically, browser engineers, by virtue of sheer number, are the ones who are writing the most tests for web technologies).
That said, there are probably ways we could make things better: a decent number of tests for things like Grid use check-layout-th.js (e.g., https://github.com/web-platform-tests/wpt/blob/f763dd7d7b7ed...).
One could definitely imagine a world in which these are a test type of their own, and the test logic (in check-layout-th.js) can be rewritten in a custom test harness to do the same comparisons in an implementation without any JS support.
The other challenge for things like Taffy only targeting flexbox and grid is we're unlikely to add any easy way to distinguish tests which are testing interactions with other layout features (`position: absolute` comes to mind!).
My suggestion would probably be to start with an issue at https://github.com/web-platform-tests/rfcs/issues, describing the rough constraints, and potentially with one or two possible solutions.
-
The Ladybird Browser Project
It also helps that there are tests
https://web-platform-tests.org/
-
Making Web Component properties behave closer to the platform
You can see how Mozilla tests the compliance of their built-in elements in the Gecko repository (the ok and is assertions are defined in their SimpleTest testing framework). And here's the Web Platform Tests' reflection harness, with data for each built-in element in sibling files, that almost every browser pass.
-
We're building a browser when it's supposed to be impossible
We have our own test suite (orginally derived from the test suite of Meta's Yoga layout library [0]) which consists of text fixtures that are small HTML snippets [1] and a test harness [2] that turns those into runnable tests, utilising headless chrome both to parse the HTML and to generate the assertions based on the layout that Chrome renders (so we are effectively comparing our implementation against Chrome). We currently have 686 generated tests (covering both Flexbox and CSS Grid).
We would like to utilise the Web Platform Test suite [3], however these are not in a standard format and many of the tests require JavaScript so we are not currently able to do that.
[0]: https://github.com/facebook/yoga
[1]: https://github.com/DioxusLabs/taffy/tree/main/test_fixtures
[2]: https://github.com/DioxusLabs/taffy/tree/main/scripts/gentes...
[3]: https://github.com/web-platform-tests/wpt/tree/master/css/cs...
-
What new CSS and JavaScript features can we expect soon? Or is it all unexpected?
The metrics are based on the passing rate for the web-platform-tests (WPT) project, the automated test suite for web standards. The completion rate is categorised as either stable, or experimental. There is no definition of what experimental entails, presumably features that are behind experimental flags are included. Stable is better to go off in any case.
-
[AskJS] MSE quality resources
Depends on what you are trying to achieve. You can run WPT MSE https://github.com/web-platform-tests/wpt/tree/master/media-source and WebCodecs https://github.com/web-platform-tests/wpt/tree/master/webcodecs tests manually to learn by doing.
-
Rookie question: How do I know I am making progress with my JS learning?
Manually running the tests in Web Platform Tests should keep you busy.
-
Browsers Running Old JS Engines
Not sure what you mean? I referred to Web API's, which generally means Web platform API's; that is Web platform API's tested by Web Platform Tests https://github.com/web-platform-tests/wpt.
-
State of CSS
If you want CSS to be the same across browsers then help implement CSS tests and file bugs
https://www.w3.org/Style/CSS/Test/Overview.en.html
https://web-platform-tests.org/
better specs are great, but tests will actually find the edge cases and lead to more convergence.
-
How do I go about learning advanced DOM manipulation with vanilla JS?
Run all these tests locally https://github.com/web-platform-tests/wpt/tree/master/dom.
What are some alternatives?
HTTP Parser - http request/response parser for c
browsh - A fully-modern text-based browser, rendering to TTY and browsers
http-proxy - A full-featured http proxy for node.js
firefox-ios - Firefox for iOS
ioccc - My IOCCC submissions and practice.
linkedom - A triple-linked lists based DOM implementation.
ultra - An ultra-small, ultra-fast, web server.
firefox-user.js-tool - Interactive view, compare, and more for Firefox user.js (eg arkenfox/user.js) + about:config functions
µWebSockets - Simple, secure & standards compliant web server for the most demanding of applications
caniuse - Raw browser/feature support data from caniuse.com
fetch - Fetch Standard