I raised issue #581 a while ago and it’s been sitting around not doing much. I’d like to make a final push to get it closed.
My understanding of where the standard is at the moment is:
- RFC3986-style URLs and Dhall’s old URLs with
path-component
s are both supported in the ABNF -
path-component
allows some characters that RFC3986 doesn’t:^`|%
-
dhall format
will write URLs as RFC3986-style.
Therefore, in principle what we need to do is write a deprecation notice marking old-style URLs as deprecated and plan to phase them out of the language.
However, when I did some testing while writing up a deprecation notice, to my surprise old-style URLs seem to no longer be accepted by dhall-haskell
:
$ echo http://example.com/foo^bar | dhall
dhall:
Error: Invalid input
(stdin):1:23:
|
1 | http://example.com/foo^bar
| ^
unexpected '^'
expecting '%', '/', '?', ->, :, end of input, keyword, operator, or whitespace
Note that ^
is a valid unquoted-path-character
so should be allowed here.
Given that the major Dhall implementation doesn’t actually support old-style URLs, can we skip the deprecation notice and just remove support for them from the ABNF? Or have I overlooked or misunderstood something?
(The minimal way we could change the ABNF is to change url-path
to only allow segment
s, not path-components
. In practice I’ll change the ABNF to better match RFC3986.)