Karl

Results 111 comments of Karl

A single `@` in the authority section (username, password, hostname, port) generally delimits the credentials from the hostname. Let's take any other URL scheme, e.g. HTTP: `http://webdavserver.net@ssl/` - "webdavserver.net" would...

With regards to adding properties on the URL value: what happens if you mutate the value using one of the property setters? For instance, let's imagine the path contains a...

It would also reflect the last operation, wouldn't it? For instance, non-fatal validation errors can occur when an IPv4 address contains non-decimal parts - e.g. `https://0x7F.1`. What's interesting about this...

Overall, I'm in favour of adding this and would like us to discuss and resolve any issues so it can be implemented in a consistent way by JS and other...

+1. > Tests that use trailing ASCII digit labels (or such a label followed by a dot) are not useful for browsers as that will trigger the IPv4 parser. I...

Fundamentally, I'm not even sure why the decomposition of these characters is even relevant - UTS46 normalises them to a _composed_ form and Punycodes that, so none of these characters...

If we treated pairs with no key-value delimiter as having a `null` value, I think we would also have to accept that in the URL `http://example/foo&&&baz&&another`, the key-value pairs are:...

Do what? Interpret a plain `&` as `(key: "", value: null)`? Not that I know of - that's why I said it would be a significant departure, but it is...

So, when [checking this out using Godbolt](https://swift.godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1AKA7nioFSS%2BsgJ4BlRugDCqWgFcWDPU4AyeBkwAOU8AI0xiPQAHVAVCewZXDy9o2PiBf0CQlnDIritMGzsBIQImYgIkz29860xbBNLygkzgsIi9BTKKqpTa7paAtpyOrgBKK1R3YmR2DgBSDQBBKncGZABqAkwuiAB9DfUNgCVMKINkAOAhd1DiQ2BMJKKE%2BYBmZ3mAVgAhAElBN8ACKkDbff6Ar5A97YMZggDsP0WSw2qI2ADdyhs8GC3kDDgA6LrNAFYVTItEbEwIOiYbG45yEpykzCqBFI5aU1GhC4AawQbkwEHJvzwwLGFK5qgJ/GILBZqggTAsHTBACYAGx4CWctHzeHQ5b6w1LZEAejNG1W6y2OwI%2B0OIA2S2I9wAnu9nACCDC4fqOUsLWjZRjsQxCQYAF5ugnEM4XK43O4PIVfAkEz1cDSgswEJAbSQadOer4aP2I82Wyk8pjIfmCiDonWBqsIk1B43I5EAAT2cVojwYe2YbAg8zVaprdYF9HHaub1s2U/r9H2Tu9za7RuWFve0Lxe4AtMeT6ez%2BeL5er9eb6e9/e8bud2bKxsACo0hQbBRTGZ0mj0NiX5RM0GyoFQWwIHSQhmBYzoDiQhAICwX6oFEjDfr%2BswbFExCoNo9Q%2Bs%2Br6uFEbrEHgwAIAQGwQMgcJqhojHOlE5x0gCyAEhshjoJB0GwTRuH4YR3HuHmJAKK%2B/izAwSi8WsWDECxtZQRs0mMEoGJqgSGhUkhJxrHYbBqXgybEG6GzYKosxRMUDCVq%2BQiYHS1EEFECggBapjmAQBIkMAZq%2BH8zjYEEQjYASBCqDRIa0HgMmaQEsosEwdkOcRB6ZUCt45bleX5Q%2B%2B5Ak%2BprLKy2yyQkalMNGzyEVV/pbiiGzdgEcXMDymCSlEtxxZsi4bHG5y1omtz3EYXUfKcw2zGwgiSW82BjrqqIHAoY0pk6xwpp6Cowjm%2BmBCY2D0HNBAeSc8a1pgZ2SbqcKHjCl0zaNyYTXVDQCJ6PxMEooLTRcN2MOdT2NStz0JkYSbjY8H12RAoS/ewGyFED82gkNgO3U6R0nWj50Y1dszoNtE1Outb2PM2qKdkaBpNT1PLxd%2BBDEO4tgQyNUMbe9bgvF9Hw/X9nOzcDC3YMi1IRHSQvI3DCT/UT%2BMXfLAigrLBJ42duJFSLyua6dwPsk1qLdu4ChMJ1ABieHygw7VdbqATbMQzC0BiWKI0oTqyybLXm5b9A26gdsO5KzsRG7HtKZj13Y3rt1%2B2bFvW7bAJh07giR2I0eDUrJObScO2C0jBJ7YtSdtQEgeO81EeuznASEAjSM%2B0jhMzcrW1K7dHeAwXZNFxN32l%2BXsLG%2BD1hUASXt0nuGyz5KqJT7GPdizreed4nk%2BFNPsfE6Tjwb/vmAD48kq06a9Pbks5UaVVANc9cPOw3z9UOBsqvhmDpXNYzfVbDdOhMQeBfqWUNoIDeGstbAz9v/ZmXQ2YcwVE6VwLAQL3E6hPZqNNwbJxrsHUOQwl5hhdlHRgngNgAHV7isVPtgrkGxRCaVnhADWCpqZcmYXSE%2BZ0ICP1FvNMuDAyScJptfX%2BlILSWg/HSBSERaBuiuAvJGZpeHrwCGSDM4NpEkPwanEO6diHg3rlHTESkTC0PQugJ0NCmB0PQH7VE0j3yqVnmGfAswvzUniggDYCAmDojpOEDCJ90DaJwRsXReCA4GKIYEEhpic7mM3v3Q%2ByN0kjyUMIskMInEtSrh1WcJis4N3dk3e0lj7HWNsVY0%2BfdrpnwycXZw7CRGsl9AwrkK8qkOI3r06xJDl671Xp3Jpx986ZPBpfPRhSa4kPgZsYkdh%2BprE2J6WitAEAXScrQKgGNtlOl2VQB6T0fioDcF0yk3kCDID8RALZCgCQDPqYNbZzy6noHLAGRh3DaIzyRg8zANE1gvPQL4TAFgJgbABUoIFIKGBguOJRaiYwxggCGWiOMBBpjhlBZ8iFcENn4uqafZFVEiKRNRH8iAoysbA3hRsElDjCUEGhXSuODL6AIqRSitl6LMWomxbipliKCWQposSsVpKSZ8sxTS2FQpuWirBay9l6jBD7DRRi8GlJhWuxVeKolHwNiPI5QfFMBJaCoBMBEc5Cl5VI3%2BRq%2B0ex2WsOVcy6x5LUUCt1Vi4FIqwCQC9WSvlDJTXvLCekq1Nq7VTBEWIvUEjKQzLwXMzqCzeoILKCsq0aydbzweYcjYxyDk7N3qcxaGxzmXJ/owoMQRUAbECPQogTCoJ1g2GADg0aUw9tBOEUQ5s6SEA2OgVAOwW2oBovgKgVAIgL2BbajCmj4pTqoLbPi35WB0jQLQfmDAImMJuXczZ7ywXlo%2BTK75jrNK0o9cCw1Mq1WgkVYy0NsqKXasFXnHFBrP2ssLXiZ9DifWUt%2BU62lLqP3SpZRK9Va9NWerg96vlP7/VCsDQB1Dp8gOFVA2hilmKsBUCYO4WgBAdVUoDf%2B8MZHaBKExZfVNKa2xdgkciO%2BlUBAi1ejDJ4b9PrfwrDfU2Gbil11KVHAaKVeSYAVA6GIcQ7Jt2yRwjYj1q0KiuRsRTYKnTvuU%2BkBg0K%2B2D3M1TC%2BnHdStXttXTNmcyE51k0weTimDjGdUwnMWOTWRVuwHp9pbJ61on058wzMGvMJDM5MwulnMCcLTc1Oz7V5m6kWbnYkFQUFBbJLp8wKjsnZYIDpgjCXY22uIPakRunUSFZdU8vAChsDoIIBZULjD9Xhjkwp4LEAKvuDodVhNXzmNsb1dhnrbm%2BtkgG0h86RIBgcJISx2jIreuKdnktkkwWks2ZSxJ2uqJMspOZMF9cwWCsQQq9aqrNXeLBvntt87%2BX9SfHhIyRrBJmutdsh10TNHusbE2/1l7IiVvTIm3%2BjbM3FPfde/56zJpJSpYc5Jk72bNgpLQIZS7krAfVlLvgYk6whSbpDk6bbJWFSgiIE6W7caRsKSTeOH4qTOVCNx4CaZap2fbZJ2UMn1BbYM7ixNAkQ30LM5EXT1AVPS6I9UPtlHtmjvdSx/mm0mjWRKhVEpCgeX/OaaemVwnaJT1%2BLwNevpnWmFOvfSk2eHDqOMO28lRTyoXZOnHBqZ3e3MWFf929rKHOLUS7u/GhSdW0QNYW01lrbWAc/MYetg1oO5uDeGw9pNrGTSp5h%2BnuH/Xvs04D/6tbk26Mg%2BL3N4PSOxNoj%2Bea/GjYsQupd5i77Hv%2Bte9VL7jv5eaNx7GTGyPMvHtgGe4riHwWGmCNK1d8r8eCRK5j1h6vGfddZ%2Blzn8b%2BeuTA634qQfojVtseS%2BJ%2BzRTjs4U1xTBQyAKK2QgNFj%2BGmtOBZgZAu3lucJpDsht2sV02b0fRonr2Vx939WB0Xl%2BAgOBBIWbxg2VVP38ygKBymzD2VnBFQJFAP3EQPxmQNA4AmFoE4C%2BF4G8A4C0FIHlw4Bgh8kwmmGwnHDeB4FICo2oJIImF5BADeAAE4CQuANRJBJB%2BCNAAAODUYQrgCQiQ/QTgSQSgzQXgOg3gDybMTgrQCYOAWAJANAdBWkMgCgOiEOKIIwkAbyCwBgPlRRUgLAdEddAANTwEwBMAAHl0IqD2CAIXYPIEYVDSBQhq5zJOB2DgjmBzJ3DQgCJbAwjeADCzp3D7Y3RAisBQh3BgBnAxBGN4j7CboHhxAuD7C8A4wGggkPJijWR6gxI5gaCI4yDii4ozI3RXAsBAjWY8AWB4iJgqADBgAFAXC3DPDGA8j%2BBBARAxB2ApAZBBBFAVB1BijdB8gDAjBLCBJ9BTIPJIAJg0I7JKjDx3DVCglXQ8AsBtiIAJg6hhNHARFegahSA/AhhshchUgVMEh7i3iTNWgXjRgChD0mgeg3BqhOhUZhNATBgsh2g8grABhPj%2BhmgfjoSJArisJpjSDyDlDii6DDgpDDwRDvwBJNgbCKVFFaJcBCASB1Q2CxheAtDuDSBeCNQiwJC3gvhSx%2BCuA3hWSJCuBGIvgFCOAlDSAqCaC1CrAQBNCVC0VBS1QsSxTOA6TpSJgTi4gHBJAgA%3D%3D), I find that the compiler produces shockingly good code. To the extent that, while I initially thought it might be a bit niche,...

One issue is that, if you're only conditionally applying a replacement while returning an opaque type, you need to perform a no-op replacement which ensures both branches have the same...