Date: Fri, 29 Mar 2024 00:06:10 +0000 (UTC) Message-ID: <612612953.17.1711670770762@c20f223fb920> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_16_641947393.1711670770762" ------=_Part_16_641947393.1711670770762 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Question shortcut - > Jump to a thread.
=E2=86=92 Lu= cius Meredith: Short answer is 'Yes' - these are different built in cha= nnel types. There will be grammar for specifying built in channel typ= es beyond merely the term constructors and collection monad. There is= a very early version of this in the leithaus github repository. I am= using Nominal as a generic class for objects that act as channels. Why hav= e channels for local resources such as storage and network? =E2=86=92= Cost and reliability is different. A contract could be blocked (depe= ndent) on storage or network channels. It's important to identify the= se dependencies at the namespace type level. The namespaces contribut= e in unique ways for cost analysis.
=E2=86=92 Namespace is a storage tree - t= his is the abstraction. I/O events get packaged into events within a = namespace as a storage tree. But since we have the information at the= point of I/O event, we can percolate that information up. Then, at the typ= e level - I can declare a channel as working with events from memory only. = So if you receive events up in the storage tree from elsewhere, you c= an identify this as a bug.
My understanding of namespaces is limited and theoretical. I th= ink it's true to say that the communication/transaction type unde= rlying a particular channel could separate that channel type into its own n= amespace (i.e., tcp socket vs memory vs ...). In this case, it see= ms clear that names for channels could be syntactically distinct, allowing = up-front classification. For example, the form of a name in the TCP socket = namespace will look distinct from a namespace for some other resource.
-=E2=86=92 Michael Stay (Unlicensed): I asked Greg abou= t this at the last dev standup; he said that there would probably be type m= odifiers for doing that. So while "&=E2=8A=A4" is the "any name" = namespace, we may see namespaces like "http &=E2=8A=A4" that means "any= name referring to a resource on the web".
=E2=86=92 Michael Stay (Unlicensed): >How are namespaces delineated<= /p>
Greg's original idea for namespaces= had to do with quoted formulae, where a formula is an expression that deno= tes a set of processes. However, in the last dev meeting, he said tha= t we can adjoin arbitrary grammars to the notion of namespace so that, for = instance, we could use URLs like `https://rchain.coop/members/*= ` to denote a namespace.
=E2=86=92 Michael Stay (Unlicensed): >if I wish to run the same cont= ract "in two different namespaces", as opposed to running the contract twic= e in the same namespace but with different input values, can I do that?
Yes. Since deploying a contra= ct involves selecting a set of names to give to the contract as arguments, = running the contract in two different namespaces is simply choosing names f= rom two different namespaces. Running it twice in the same namespace = can have different meanings depending on which names you give it; you can g= ive the two instances disjoint names so that there are two copies running i= n an overarching namespace, or you can invoke it twice with the exact same = names, creating, for example, two servers listening for incoming messages a= t the same address.
Michael Stay (Unlicensed): Namesp=
aces should be thought of like circles on a Venn diagram. Given two c=
ircles, they may be disjoint, one may contain the other, or they may inters=
ect without one containing the other. Names themselves are points on =
the plane.
You can pick the same points twice, or pi=
ck different points in the same circle, or pick points in entirely disjoint=
circles.
Here's a simple contract:
contract sendX(y) =3D y!<*x>
Now I deploy the contract once using the name z. It'll send x once on=
z. Now I deploy it again using the name z. It'll send x again =
on z. Sending x twice on z is different than sending it once on z.&nb=
sp; So you can deploy the contract twice using the same name and get a fund=
amentally different effect.
The name z may be part of a namespace Z t= hat also contains the name z'. Deploying the contract using the name = z' is still deploying it in the Z namespace.
=E2=86=92 Michael Stay (Unlicensed): > namespaces declared
We'll probably want to allow the ab= ility to define local grammars for namespaces, but I haven't thought about = how this would work. At worst this is something we can check using de= veloper tools, but I'd like a more principled approach to declaring namespa= ces.
Channe=
l[Channel[Any]]
?=E2=86=92 Michael Stay (Unlicensed): >allowable types for channels= p>
In rho calculus, the only kind of t= hing you can send is a process P, which shows up on the other side as a nam= e &P. You can constrain the shape and behavior of the process you= 're expecting with a formula.
=E2=86=92 Michael Stay (Unlicensed): >a channel accept other channel= s?
Suppose I have a name x on which a proces= s is listening
`for (z =E2=86=90 x).P`
and I have a name y that I want to make a= vailable to the continuation P of that process. I'd say
`x!<*y>`
and then when the process received the me= ssage, it would bind z to y in P.
=E2=86=92 Michael Stay (Unlicensed): >any type
yes
=E2=86=92 Michael Stay (Unlicensed): Yes
=E2=86=92 Michael Stay (Unlicensed):
One possible answer is to have `sys= tem` be a namespace modifier, and then the system namespace would be `syste= m &=E2=8A=A4`.
REEEEEEEEEEEEEEEEE.
"I need a namespace modifier for system."
vs.
"I can adjoin arbitrary grammars."
This stuff feels to "clever" by half.
There's still a lot of work to be d= one in figuring out what namespaces we need beyond the fundamental ones fro= m quoted rho calculus terms, and what kinds of naming we want to allow appl= ications to do.
=E2=86=92 Lucius Meredith (Via Develop= er standup meeting on 09.13.17)
Namespaces are a collection of channels. N=3DP(N) - P is the theor= y of process calculi that depend on N. Rho Calc is the smallest solut= ion to this equation.
G is an index - there is a bunch of G's.
N[G] =3D P(N[G]) + =E2=88=91G&= nbsp;=E2=86=92 G =3D URI + UnicodeStrings+ integers
Are we going to use multiple copies of P(N[G]) for the system na= mespaces or other namespaces? For the layman's instructions w= e are not just making quoted processes be the set of names. There is= a Rho_0 theory (N=3DP(N)) that says that once you show Rho_0 works out, yo= u can expand row it to include these other names. If we do not upset = the kernel theory then we know we are safe with respect to these other name= s but you also know, -
N[G] =3D P(N[G]) + =E2=88=91
Because this is a sum, you can do type level analysis on the names thems= elves and determine when you have a name at the type level (statically) whe= n the name is a quoted process or something else - so you can at the type l= evel determine if the de-reference makes sense or not. Then we can sa= y that it is a 'type error to dereference this type of URI"
There is a class of high performance system names that are integers. &nb= sp;All other names are URI's + Unicodes =E2=86=92 URI encoded names, e= specially public names. This gives us coverage for all the web techno= logies out there today.
URI scheme that gives us a tree versus an overlapping scheme which is ea= sier for us to think about. Ex: memory://path, net://path. Michael Stay (Unlice= nsed) - How does the collection Monad work with anything that isn't a p= rocess. Greg - we can do a brute force thing, and just run Ladl over= the unicode structure, or we could use XPath.
People will not generate namespaces in the Integer portion. They w= ill only generate URI + Unicode string names.
Michae= l Stay (Unlicensed): Are we going to allow any local namespacing?  = ;Ex: an app wants to use a specific format for urls - if they don't - throw= a compile error? Lucius Meredith: For Me= rcury this could be a tool, and later this becomes part of the system.
=E2=86=92 Answer?
=E2=86=92 Lucius Meredith = - That is under the assumption that resolve gets you to a resource. D= NS gets you to a name. If we are passing actual names, there is no ne= ed to use names. Inside the VM we will handle resolving names to an i= nternal resource.
=E2=86=92 Answer?