RFC 7595: > A scheme name is not a “protocol.” However, like a service name as defined in Section 5 of [RFC6335], it often identifies a particular protocol or application.
So a URI scheme consists of: - a unique scheme name - possible restrictions on syntax of scheme-specific-part
(per RFC 7595) - information on the kinds of resources being identified - well-defined operations on identified resources - possible restrictions on encoding and allowed characters - known interoperability considerations and incompatibilities - any security considerations
along with other registrar-ish details, like contact info and registration status.
note, in general the web follows the URL Standard much more than the RFCs (see https://url.spec.whatwg.org/)
Neat. Looks like a lot of good practical advice.
ah yes, the Other URLs
and yes @dedbox that list looks about right
I think this, or something equally plain, would make the docs easier to read and write: > Standardize on the term URL. URI and IRI are just confusing. In practice a single algorithm is used for both so keeping them distinct is not helping anyone. URL also easily wins the search result popularity contest.
@dedbox I agree 100%
I would personally rather have a terminology section in the docs with @tech
terms defined for “URI”, “URL”, “URN”, “persistent global name”, and “locator”
but I think that’s because I’m focused more on machine-to-machine communication with net2
than server-to-browser communication
and then not use the terms URI and URN :stuck_out_tongue:
link relations — which I really want to build stuff with — are often best described with URNs
but I think there’s much better stuff to focus on in net2
first so just using URL everywhere is fine for v1
also hi @samth
hi @notjack
I might or might not be attempting to make http2 for racket
:p
along with @dedbox
you work on a bunch of web standards stuff right?
I am in favor
I work on JS
for a very loose definition of “work”
I think I remember seeing some comments from you in a github thing about the es6 pattern matching syntax
yes
that is not surprising
also if you’ve written ES6 modules you can blame me
The import/export syntax is very comfortable.
oh fantastic I have an outlet for that now
(kidding)
glad y’all like it
it of course wasn’t just me
but that’s the primary thing I’ve done
I left my last job (node+angular) just before es6 modules started being everywhere, and since then I haven’t done any js at all in google
so alas I haven’t gotten to use much of the es6 goodies
but the modules were probably the part I was most happy with so thank you
Just got the net2
package stub installed and docs compiled. Looks pretty good already.
:thumbsup:
where is the net2 pkg?
apparently private :wink:
oh, sorry. I didn’t realize.
oh right I still gotta make that public
you could just let me into the secret club
@samth ’twas only private while I waited on google legal process to make sure I had copyright ownership
so that’s why slack didn’t make the link fancy
btw gotta add a few lines to tech.rkt
to make the docs compile
I think I’ve got some stuff in my local clone that I haven’t pushed yet
@@ -17,7 +17,10 @@
(define-tech-helpers
transport-tech "transport"
connector-tech "connector"
- listener-tech "listener")
+ listener-tech "listener"
+ transport-pool-tech "transport pool"
+ disposable-pool-tech "disposable pool"
+ transient-tech "transient")
I can push it tonight, unless you’d like to right now
and I’m gonna make it public now - good with you @dedbox?
yes
I’ll commit the change now.
wait
actually
?
to a dev branch
some of those tech terms are defined in the disposable package (transient
and disposable pool
) so that tech ref won’t work as is
oh, yeah some of my links are broken. That was just to see what was in there.
gotcha
Actually, I’ll leave it alone. The patch above is small and easy to read.
voila, the repo is public
> Currently, including identifying user info in authorites (see RFC 3986 Section 3.2.1) is not supported due to historically widespread security problems and a lack of immediate use cases.
git@github.com:jackfirth/racket-net2.git
use case?
not sure if that’s something git/github specific or part of an http
url
certainly not immediate, in either case
The https equivalent does not have the username. <https://github.com/jackfirth/racket-net2.git>
¯_(ツ)_/¯
unrelated: decided to rename “racket transport addresses” to “virtual addresses” since really all that’s important about them is that they’re addresses in some sort of software-defined network with reliable transport
I like it.
I want to port axon
to other languages, so that’s convenient for me.
format I’m thinking of:
- virtual address is 64 bits so it fits into a
long
in most languages+platforms (32 bits seems too low for, say, a giant Erlang cluster where every process has an address) - string form of virtual address is
virt.<hex-encoded-bits>
so implementations can read them one byte at a time if needed for prefix-routing - string form of prefix-routable address range is
virt-range.<nibble-count>.<hex-encoded-prefix-bits>
(less sure on this one) so implementations can 1) usenibble-count
as a max read length, 2) use.
to split into three parts, and 3) guarantee that there won’t be “extra” hex encoded bits because you have to hex encoded bits in chunks of 4 (“nibbles”)
So the address space is flat, not hierarchical. This makes sense if the virtual address spaces of racket processes are not shared. So far, that seems to be the case.
Scheme names virt
and virt-range
are not yet registered.
Virtual ranges seem useful for “green” fan-in and fan-out, good for many IO-bound threads. Might give us some clarity on TCP/IP ranges.
I think prefix routing would let you build hierarchical addressing on top if you wanted, but yes
also virt
and virt-range
would not be schemes
you’d instead have something like this:
httpv:virt.<hex>/some/resource?query
oh, they’re registered names?
oh and port numbers would still be a thing so the same address could have multiple listeners
yes
Could we “upgrade” our HTTP scheme to support virtual addresses as registered names, or is that considered not playing well with others?
that would be the latter, because it makes it ambiguous - a virtual address could also be a dns address so it becomes unclear which one to use
RFC 7595 explains this, I think.