Repository navigation
v0.19.0
MINOR: before 1.0.0, a breaking change increases MINOR. check finds more issues in trees, encodeValue can give a different document, and factsOf gives other facts for a verb other than eval. The type of WorldIssue.code gets a second value. No export goes.
Changes of behavior
checkfinds attribute faults of a tree (D106). In 0.18.0,checkaccepted a read of an attribute that no rung answers, and the run gave#N/A. In 0.19.0,checkgives that#N/Aat the same place before a run. It also gives#NAME?for an attribute namedparentortype, and#CALC!for a tree kind of the run side.checkfinds the cycles of attributes (D107). In 0.18.0, a cycle of tree attributes gave#CYCLE!only in a run. In 0.19.0,checkgives that#CYCLE!before a run for each certain cycle, with the same place and reason. A cycle through a lazy branch or an unknown read is not an issue.encodeValueuses the codec of the most specific domain (D109). In 0.18.0, it tried the domains with a codec in the order of their names. Thus a parent with an early name encoded the members of its subdomains. In 0.19.0, it tries the deepest domain first. Names decide only between domains of the same depth. A table where no codec domain has a parent gives the same documents as before.factsOfgives the facts of a verb from its own contract (D111). In 0.18.0,factsOfwith a verb other thanevalgave the side and the effects of theevalcontract. In 0.19.0, it gives the effects that the entry of the verb inverbEffectsdeclares. A kind is on the run side for that verb only when its entry declares an effect. A kind without an entry adds nothing, as incheck.WorldIssue.codecan be#TYPE!(D110). In 0.18.0, its type was only"#NOEVAL". In 0.19.0, it is"#NOEVAL" | "#TYPE!". Code that givesissue.codeto the literal type"#NOEVAL"does not compile. Calls without the new option give the same issues as before.
New features
attributeGraphgives the graph of the attribute instances of a tree (D107). It gives one vertex for each node and attribute, one edge for each read, the edges with an unknown source, and the certain cycles.attributeVertexIdgives the id of a vertex.treeNodeEvaluator({ cell })takes the memo cells of a host (D108). A host can keep the cell of each attribute between evaluations of one plan. A change of its store then computes only the attributes whose cells it drops. Withoutcell, the standard code does not change.checkWorld(machine, verbs, { types: true })checks each value type of a machine (D110). In 0.18.0,checkfound a bad value type of a contract, a domain or a signature only at the first document that used it. In 0.19.0, this option finds each bad value type before a document exists. Each bad term gives one#TYPE!issue, with its owner and its keys inat. A type rule lists what it reads with the new optional fielddeclared.printReadsfinds a host value that changed in place (D112). In 0.18.0,verifyReadscompared host values by identity, so a value changed in place kept a stale result. In 0.19.0,printReadsand theverifyReadsoptionprintsfind such a change, and give the changed read withinPlace: true.durableandscheduletake the optioninPlace. Without the new options, nothing changes.
Tests and CI
These changes are not in the package. Each bench record names its mode (K199). The ladder of STATIC.LINEAR also measures the memory of each walk (D105).