Did you know you couldn't use hex numbers as IPv4 octets, but you kinda can? In WHATWG compliant URL Parsers, it's a warning, not an error:
Β»
Β»
You already can use this in your browsers, you can write
Also
Β»
http://127.0.0x10.1
is same as:Β»
http://127.0.16.1
I don't agree with this decision though, and also it messes up my error handling ideas that I had in mind, but ...!You already can use this in your browsers, you can write
http://0x7F.0x0.0x0.0x1, you'll get http://127.0.0.1/.Also
http://0x7F000001 is going to be http://127.0.0.1 as well.π₯3π€―2
C++23's [[assume(...)]] fallback looks like this.
And it only took me something like 50+ browser tabs to figure this out π
Source on Github
And it only took me something like 50+ browser tabs to figure this out π
Source on Github
π1
Web++: A C++ Web Framework
C++23's [[assume(...)]] fallback looks like this. And it only took me something like 50+ browser tabs to figure this out π
Source on Github
I updated this just a bit to add
P.S.: 30+ more tabs got opened as well to get this update π
New source code on Github
Test: Godbolt Link
constexpr support as well; I WENT OVERBOARD, I think π
.P.S.: 30+ more tabs got opened as well to get this update π
New source code on Github
Test: Godbolt Link
π1
Updated my C++ implementation of the Javascript encodeURIComponent and decodeURIComponent functions; it's now faster.
π₯1
Opened up 2 PRs for boost::coroutine and boost::context to fix similar casting warnings in them.
Web++: A C++ Web Framework
For Web++ I needed to have header-only C++ compliant version of liburing, so I've forked it and did that. There are still some UBs and Compiler-Specific stuff that I need to sort out, but right now it's a drop-in replacement. I would like to have liburing'sβ¦
Merged the upstream changes (which is aiming to become liburing 2.6).
There are some issues left still!
Some people think:
What do you think?
There are some issues left still!
Some people think:
I'm over my head
What do you think?
Browsers make mistakes too
There are a few bugs with the current implementation of URL Parser for firefox. (Chromium has them too, but that's another bug).
This URL:
Should be equal to this URL (from ada-url):
I'm writing a WHATWG-compliant URL Parser, so that's why I'm noticing these kinda stuff.
It seems like URL parser of Firefox has a bug which doesn't decode the last segment of the path for some reason.
For example,
is just
There are a few bugs with the current implementation of URL Parser for firefox. (Chromium has them too, but that's another bug).
This URL:
http://127.0.0.1/..//./one/%2E./%2e/two/././././%2e/%2e/.././three/four/%2e%2e/five/.%2E/%2e
Should be equal to this URL (from ada-url):
http://127.0.0.1//three/
| | |
| | `------- pathname_start 16
| | `------- host_end 16
| `---------------- host_start 7
| `---------------- username_end 7
`------------------ protocol_end 5
I'm writing a WHATWG-compliant URL Parser, so that's why I'm noticing these kinda stuff.
It seems like URL parser of Firefox has a bug which doesn't decode the last segment of the path for some reason.
For example,
http://localhost/page/%2e%2eis just
http://localhost/Did you know these two are VALID URLs and are the SAME?
file://C|\windows
file:///C:/windows
π1
Web++: A C++ Web Framework
Did you know you couldn't use hex numbers as IPv4 octets, but you kinda can? In WHATWG compliant URL Parsers, it's a warning, not an error: Β» http://127.0.0x10.1 is same as: Β» http://127.0.16.1 I don't agree with this decision though, and also it messesβ¦
All of these URLs refer to the same place:
πππππ
http://127.0.0.1/
http://0x7F.1/
http://0x7F000001
http://0x0000000007F.0X1
http://127.0.0x0.1
http://127.0X0.0x0.1
http://127.0X0.0x0.0x1
http://127.0.0x0.0x0000000000000000000000000000000000000000000000000000000000000001
http://0x7F.0x00000000000000000000000001
http://0x000000000000000007F.0x00000000000000000000000001
http://0x000000000000000007F.0.0x00000000000000000000000001
http://0x7F.0.0.0x1
http://0x7F.0.0x000.0x1
http://2130706433
http://127.1
http://127.0x00.1
http://127.0x000000000000000.0.1
πππππ
π€1
Use clang-format, they said!
Updated my
.clang-format and ran it on all the files, it broke a lot of things.I had to spend hours going through all the changes one by one.
After doing this, I surprised myself; I didn't expect to have written this much code over the past few years.
Turns out I missed some bugs: the issue