From 826f6a4c0a4dc09e452d4b2e61202a0c94f819fe Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 3 May 2022 20:43:53 -0400 Subject: =?UTF-8?q?BREAKING:=20More=20consistent=20Under=20fill=20handling?= =?UTF-8?q?;=20don't=20retain=20fill=20with=20=E2=8C=BE=E2=8A=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commentary/stability.md | 3 ++- docs/bqn.js | 4 ++-- docs/commentary/stability.html | 3 ++- rt.bqn | 2 +- src/r1.bqn | 4 ++-- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/commentary/stability.md b/commentary/stability.md index 8d433370..548dc7c5 100644 --- a/commentary/stability.md +++ b/commentary/stability.md @@ -6,7 +6,8 @@ The short answer is that code running online or in CBQN is unlikely to break. In I have thousands of lines of running BQN code including the self-hosted sources, website generator, and Singeli compiler. There are also now many BQN examples and REPL links [spread](../community/README.md) across the web which would be harder to change. So there is a strong reason to maintain compatibility for common or even moderately used features. Because BQN's been designed in a conservative way, avoiding fiddly decisions by keeping things simple, it seems that few compatibility breaks will be required. The history so far seems to bear this out. -Various edge cases were fixed when I first ran the primitive specifications through unit tests(!) in February 2021. Since then there has been a single compatibility break, that is, change from one intentional (i.e. excluding bugs) non-error behavior to a different behavior. +Various edge cases were fixed when I first ran the primitive specifications through unit tests(!) in February 2021. Since then there have been two compatibility breaks, that is, changes from one intentional (i.e. excluding bugs) non-error behavior to a different behavior. - 2021-08-07: Pick (`βŠ‘`) of empty array and Reshape (`β₯Š`) of empty array to non-empty changed from using fill elements to errors. +- 2022-05-03: Don't always preserve fill of `𝕩` in structural Under, such as `arr⌾⊒ ','β‰₯','\0','√','<','⊒','⊣','≍','β‹ˆ','↑','↓','↕','⌽','⍉','/','βŠ”','⁼','˜','Β¨','⌜','˘','`','∘','β—‹','⌾','⍟','⊘','⊸','⟜',str("+-Γ—Γ·β‹†βˆšβŒŠβŒˆ|¬∧∨<>β‰ =≀β‰₯β‰‘β‰’βŠ£βŠ’β₯ŠβˆΎβ‰β‹ˆβ†‘β†“β†•Β«Β»βŒ½β‰/β‹β’βŠβŠ‘βŠβŠ’βˆŠβ·βŠ”!Λ™ΛœΛ˜Β¨βŒœβΌΒ΄Λ`βˆ˜β—‹βŠΈβŸœβŒΎβŠ˜β—ΆβŽ‰βš‡βŸβŽŠ%"),str("Β΄: Identity not found"),str("Β΄: 𝕩 must be a list"),str("Mapping: Equal-rank argument shapes don\'t agree"),str("Mapping: Argument shape prefixes don\'t agree"),str("⍋𝕩: 𝕩 must have rank at least 1"),str("⍋ or ⍒: Rank of 𝕨 must be at least 1"),str("⍋ or ⍒: Rank of 𝕩 must be at least cell rank of 𝕨"),str("⍋ or ⍒: 𝕨 must be sorted"),str("pβŠπ•© or π•¨βˆŠp: p must have rank at least 1"),str("p⊐n or n∊p: Rank of n must be at least cell rank of p"),str("βˆŠπ•© or βŠπ•©: 𝕩 must have rank at least 1"),str("𝕨⍷𝕩: Rank of 𝕨 cannot exceed rank of 𝕩"),str("/𝕩: 𝕩 must have rank 1"),str("/𝕩: 𝕩 must consist of natural numbers"),str("𝕨⍉𝕩: 𝕨 must have rank at most 1"),str("𝕨⍉𝕩: Length of 𝕨 must not exceed rank of 𝕩"),str("𝕨⍉𝕩: 𝕨 must consist of valid axis indices"),str("𝕨⍉𝕩: Skipped result axis"),str("↑𝕩: 𝕩 must have rank at least 1"),str("↓𝕩: 𝕩 must have rank at least 1"),str("π•¨βŠ‘π•©: Indices in 𝕨 must consist of integers"),str("π•¨βŠ‘π•©: Index out of range"),str("π•¨βŠπ•©: Indices in 𝕨 must be integers"),str("π•¨βŠπ•©: Indices out of range"),str("π•¨βŠ‘π•©: 𝕩 must be a list when 𝕨 is a number"),str("π•¨βŠ‘π•©: Indices in compound 𝕨 must be lists"),str("π•¨βŠ‘π•©: Index length in 𝕨 must match rank of 𝕩"),str("𝕨"),str("𝕩: "),str("𝕩 must have rank at least 1 for simple 𝕨"),str("Compound 𝕨 must have rank at most 1"),str("Length of compound 𝕨 must be at most rank of 𝕩"),str("𝕨 must be an array of numbers or list of such arrays"),str("βŠπ•©: 𝕩 must have rank at least 1"),str("βŠπ•©: 𝕩 cannot have length 0"),str("⊏"),str("βŠ‘π•©: 𝕩 can\'t be empty"),str("βŒ½π•©: 𝕩 must have rank at least 1"),str("π•¨βŒ½π•©: 𝕨 must consist of integers"),str("π•¨βŒ½π•©: 𝕨 too large"),str("⌽"),str("𝕨/𝕩: 𝕨 must consist of natural numbers"),str("𝕨/𝕩: Lengths of components of 𝕨 must match 𝕩"),str("𝕨/𝕩: Components of 𝕨 must have rank 0 or 1"),str("/"),str("=≠≑≒"),str("βˆΎπ•©: 𝕩 must have an element with rank at least =𝕩"),str("Under βš‡: depths must be less than 0, or ∞"),str("βŠ’βŠ£Λœβˆ˜β—‹βŠΈβŸœβŠ˜β—Ά"),str("´˝"),str("=β‰ β‰’"),str("<"),str("β‹ˆ"),str("≍"),str("↕/»«"),str("βŠ”"),str("β₯ŠβŒ½β‰βŠ"),str("↑↓"),str("βŠ‘"),str(">"),str("∾"),str("¨⌜"),str("˘"),str("βŽ‰"),str("βš‡"),str("Cannot modify fill with Structural Under"),str("⌾: Incompatible result elements in structural Under"),str(">𝕩: Elements of 𝕩 must have matching shapes"),str("π•¨βˆΎπ•©: Rank of 𝕨 and 𝕩 must differ by at most 1"),str("π•¨βˆΎπ•©: Cell shapes of 𝕨 and 𝕩 must match"),str("βˆΎπ•©: Incompatible element ranks"),str("βˆΎπ•©: 𝕩 element shapes must be compatible"),str("βˆΎπ•©: 𝕩 element trailing shapes must match"),str("βˆΎπ•©: empty 𝕩 fill rank must be at least argument rank"),str("βˆΎπ•©: 𝕩 must be an array"),str("↑"),str("↓"),str("𝕩: 𝕨 must "),str("have rank at most 1"),str("consist of integers"),str("Β« or Β»: 𝕩 must have rank at least 1"),str("Β« or Β»: 𝕨 must not have higher rank than 𝕩"),str("Β« or Β»: Rank of 𝕨 must be at least rank of 𝕩 minus 1"),str("Β« or Β»: 𝕨 must share 𝕩\'s major cell shape"),str("↕𝕩: 𝕩 must consist of natural numbers"),str("↕𝕩: 𝕩 must be a number or list"),str("𝕨↕𝕩: 𝕨 must have rank at most 1"),str("𝕨↕𝕩: Length of 𝕨 must be at most rank of 𝕩"),str("𝕨↕𝕩: 𝕨 must consist of natural numbers"),str("𝕨↕𝕩: Window length 𝕨 must be at most axis length plus one"),str("˘: Argument lengths don\'t agree"),str("˝: 𝕩 must have rank at least 1"),str("˝: Identity does not exist"),str("βˆ˜βŒŠβŒ½β†‘"),str("𝕨β₯Šπ•©: 𝕨 must have rank at most 1"),str("𝕨β₯Šπ•©: 𝕨 must consist of natural numbers"),str("𝕨β₯Šπ•©: Can\'t compute axis length when rest of shape is empty"),str("𝕨β₯Šπ•©: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑"),str("𝕨β₯Šπ•©: Shape must be exact when reshaping with ∘"),str("𝕨β₯Šπ•©: Can\'t produce non-empty array from empty 𝕩"),str("βŠ”: Grouping argument must consist of integers"),str("βŠ”: Grouping argument values cannot be less than Β―1"),str("βŠ”π•©: 𝕩 must be a list"),str("π•¨βŠ”π•©: Rank of simple 𝕨 must be at most rank of 𝕩"),str("π•¨βŠ”π•©: Lengths of 𝕨 must equal to 𝕩, or one more only in a rank-1 component"),str("π•¨βŠ”π•©: Compound 𝕨 must be a list"),str("π•¨βŠ”π•©: Total rank of 𝕨 must be at most rank of 𝕩"),str("π•¨βŠ”π•©: 𝕩 must be an array"),str("βŽ‰ or βš‡: 𝔾 result must have rank at most 1"),str("βŽ‰ or βš‡: 𝔾 result must have 1 to 3 elements"),str("βŽ‰ or βš‡: 𝔾 result must consist of integers"),str("⍟: 𝕨𝔾𝕩 must consist of integers"),str("β‰₯: Needs two arguments"),str("≀: Needs two arguments"),str("βŠ’: Rank of 𝕨 must be at least 1"),str("βŠ’: Rank of 𝕩 must be at least cell rank of 𝕨"),str("Can\'t invert blocks (add an undo header?)"),str("Cannot invert modifier"),str("⁼: Inverse failed"),str("⁼: Inverse does not exist"),str("⁼: Inverse not found")] ,[[0,1,0],[0,0,1],[0,0,2],[0,0,3],[0,0,4],[0,0,5],[0,0,6],[1,1,7],[2,1,8],[1,1,9],[0,0,10],[2,1,11],[0,0,12],[1,0,13],[1,1,14],[1,1,15],[0,0,16],[0,0,17],[1,0,18],[0,0,[[],[19]]],[1,1,20],[1,1,21],[1,0,22],[0,0,[[],[23]]],[0,0,24],[0,0,25],[0,0,26],[0,0,27],[0,0,28],[2,0,[[],[29]]],[0,0,30],[0,0,[[],[31]]],[0,0,32],[0,0,33],[0,0,34],[0,0,[[],[35]]],[0,0,36],[0,0,[[],[37]]],[1,1,38],[0,0,39],[0,0,[[],[40]]],[0,0,[[],[41]]],[0,0,42],[0,0,43],[0,0,[[],[44]]],[0,0,[[],[45]]],[0,1,46],[0,0,47],[0,0,[[],[48]]],[0,0,49],[0,0,50],[0,0,[[],[51]]],[2,1,52],[1,0,53],[1,0,54],[0,0,55],[0,0,[[],[56]]],[0,0,57],[0,0,58],[0,1,59],[2,1,60],[0,0,61],[0,0,62],[1,0,[[],[63]]],[0,0,64],[0,0,[[],[65]]],[1,1,66],[0,0,67],[0,0,68],[0,0,69],[0,0,70],[0,0,[[],[71]]],[0,0,72],[1,0,73],[1,0,74],[0,0,[[],[75]]],[1,0,76],[0,0,77],[0,0,[[],[78]]],[0,0,[[],[79]]],[0,0,[[],[80]]],[0,0,81],[0,0,[[],[82]]],[0,0,[[],[83]]],[1,1,84],[2,0,85],[2,0,86],[2,0,87],[0,0,[[],[88]]],[0,0,[[],[89]]],[1,1,90],[0,0,91],[0,0,92],[0,0,[[],[93]]],[0,0,94],[0,0,95],[0,0,96],[0,0,97],[0,0,[[],[98]]],[0,0,99],[0,0,[[],[100]]],[0,0,101],[2,0,102],[0,0,[[],[103]]],[0,0,104],[0,0,[[],[105]]],[0,0,106],[0,0,107],[0,0,108],[0,0,109],[0,0,110],[0,0,111],[0,0,112],[0,0,113],[0,0,114],[0,0,115],[0,0,[[],[116]]],[0,0,[[],[117]]],[0,0,[[],[118]]],[0,0,[[],[119]]],[0,0,[[],[120]]],[0,0,121],[0,0,[[],[122]]],[1,0,123],[2,0,124],[0,0,125],[0,0,126],[0,0,127],[0,0,128],[0,0,129],[1,0,130],[1,0,[[],[131]]],[0,0,132],[0,0,[[],[133]]],[0,0,[[],[134]]],[0,0,135],[0,0,136],[0,0,137],[0,0,138],[0,0,[[],[139]]],[0,0,[[],[140]]],[0,0,141],[2,0,142],[0,0,[[],[143]]],[0,0,144],[0,0,[[],[145]]],[0,0,[[],[146]]],[0,0,147],[0,0,148],[1,1,149],[0,0,150],[0,0,[[],[151]]],[0,0,152],[0,0,[[],[153]]],[0,0,154],[0,0,[[],[155]]],[0,0,156],[0,0,157],[0,0,[[],[158]]],[0,0,159],[0,0,160],[1,0,161],[0,0,162],[0,0,163],[1,0,164],[0,0,165],[0,0,166],[0,0,167],[0,0,168],[1,0,[[],[169]]],[1,1,170],[2,0,171],[2,0,172],[1,0,173],[1,0,174],[1,0,175],[0,0,176],[1,0,177],[0,0,178],[1,0,179],[0,0,180],[0,0,181],[0,0,182],[0,0,183],[0,0,[[],[184]]],[0,0,185],[0,0,186],[0,0,187],[0,0,188],[0,0,189],[0,0,190],[0,0,191],[0,0,[[],[192]]],[0,0,[[],[193]]],[2,0,194],[1,0,195],[2,0,196],[0,0,197],[0,0,[[],[198]]],[1,0,199],[0,0,200],[1,0,[[],[201]]],[1,1,202],[0,0,[[],[203]]],[0,0,[[],[204]]],[0,0,[[],[205]]],[0,0,[[],[206]]],[0,0,[[],[207]]],[0,0,[[],[208]]],[0,0,[[],[209]]],[0,0,210],[0,0,211],[1,1,212],[0,0,213],[0,0,[[],[214]]],[0,0,[[],[215]]],[0,0,216],[0,0,217],[0,0,218],[0,0,219],[0,0,220],[0,0,221],[0,0,222],[0,0,223],[0,0,224],[0,0,[[],[225]]],[0,0,[[],[226]]],[0,0,[[],[227]]],[0,0,228],[2,1,229],[2,1,230],[1,1,231],[1,1,232],[1,1,233],[0,0,[[],[234]]],[0,0,235],[0,0,236],[0,0,237],[0,0,238],[0,0,[[],[239]]],[0,0,[[],[240]]],[1,1,241],[0,0,242],[0,0,[[],[243]]],[0,0,244],[1,0,245],[0,0,246],[0,0,[[],[247]]],[0,0,248],[0,0,249],[0,0,[[],[250]]],[0,0,251],[0,0,252],[0,0,253],[0,0,254],[0,0,255],[0,0,256],[0,0,[[],[257]]],[0,0,258],[0,0,259],[0,0,260],[0,0,261],[1,1,262],[2,0,263],[0,0,[[],[264]]],[0,0,265],[1,1,266],[1,1,267],[1,0,268],[1,0,[[],[269]]],[1,1,270],[1,0,271],[1,1,272],[1,0,273],[1,0,274],[1,1,275],[1,1,276],[1,1,277],[2,1,278],[0,0,279],[0,0,[[],[280]]],[0,0,281],[2,0,282],[0,0,[[],[283]]],[0,0,284],[0,0,285],[0,0,[[],[286]]],[0,0,287],[0,0,[[],[288]]],[0,0,289],[0,1,290],[1,0,291],[0,0,[[],[292]]],[0,0,293],[0,0,294],[1,0,295],[0,0,[[],[296]]],[0,0,[[],[297]]],[0,0,298],[0,0,299],[0,0,[[],[300]]],[0,0,301],[0,0,[[],[302]]],[0,0,303],[0,0,304],[1,0,305],[0,0,306],[0,0,307],[0,0,[[],[308]]],[0,0,309],[1,0,310],[0,0,311],[0,0,[[],[312]]],[2,0,313],[1,1,314],[1,1,315],[0,0,316],[0,0,317],[0,0,318],[0,0,319],[0,0,320],[0,0,321],[0,0,322],[0,0,323],[0,0,324],[0,0,[[],[325]]],[0,0,326],[0,0,327],[0,0,328],[0,0,329],[0,0,330],[1,0,331],[0,0,332],[0,0,[[],[333]]],[0,0,334],[0,0,335],[0,0,[[],[336]]],[0,0,337],[0,0,338],[0,0,[[],[339]]],[0,0,340],[0,0,[[],[341]]],[0,0,342],[1,0,343],[0,0,[[],[344]]],[0,0,345],[0,0,346],[0,0,347],[0,0,348],[0,0,349],[0,0,350],[0,0,[[],[351]]],[0,0,[[],[352]]],[0,0,353],[0,0,354],[0,0,355],[0,0,356]] - ,[[0,181],[4042,3],[4087,3],[4095,3],[4099,3],[4112,3],[4127,3],[4139,2],[4168,3],[4200,2],[4217,4],[4279,5],[4315,3],[4322,5],[4380,4],[4446,3],[4501,3],[4512,4],[4577,9],[4646,5],[4723,5],[4790,4],[4846,8],[5018,8],[5175,3],[5224,3],[5270,6],[5355,3],[5379,7],[5493,11],[5792,4],[5852,3],[5877,3],[5939,4],[6010,6],[6074,3],[6114,5],[6191,3],[6208,14],[6388,3],[6434,3],[6454,3],[6471,4],[6529,4],[6605,5],[6679,3],[6738,0],[6749,4],[6816,3],[6826,3],[6833,3],[6847,3],[6855,3],[6893,5],[6930,5],[6957,3],[6982,3],[7007,3],[7034,7],[7108,32],[7850,3],[7915,4],[8015,7],[8211,7],[8237,14],[8450,5],[8529,9],[8686,4],[8762,7],[8874,7],[8991,3],[9098,4],[9160,9],[9281,8],[9355,7],[9417,9],[9575,9],[9723,4],[9834,8],[10048,10],[10432,3],[10476,6],[10707,4],[10821,3],[10958,2],[10979,14],[11104,8],[11232,10],[11305,3],[11331,4],[11433,2],[11441,3],[11449,3],[11457,3],[11477,8],[11552,3],[11560,3],[11568,3],[11576,3],[11584,3],[11592,3],[11603,3],[11624,7],[11665,4],[11725,3],[11767,5],[11909,3],[11956,3],[11982,3],[12031,3],[12060,3],[12068,3],[12101,3],[12145,3],[12193,3],[12205,3],[12278,4],[12314,3],[12329,3],[12344,3],[12362,3],[12376,3],[12386,3],[12438,6],[12461,6],[12489,3],[12501,3],[12532,3],[12540,3],[12548,3],[12556,5],[12591,12],[12764,3],[12775,3],[12795,3],[12815,3],[12826,3],[12837,3],[12852,7],[12923,6],[12969,3],[12987,3],[12994,6],[13029,10],[13206,4],[13262,11],[13463,4],[13530,3],[13555,3],[13580,2],[13595,3],[13622,7],[13763,3],[13792,3],[13802,3],[13821,3],[13831,3],[13840,3],[13850,3],[13867,3],[13909,3],[13913,5],[13946,8],[14057,9],[14139,13],[14244,3],[14252,3],[14274,7],[14379,7],[14408,11],[14606,2],[14664,10],[14740,13],[14868,5],[14894,5],[14916,5],[14938,4],[14949,5],[14990,3],[15022,5],[15063,4],[15074,3],[15081,4],[15092,4],[15103,3],[15111,6],[15138,5],[15159,6],[15186,3],[15194,4],[15214,3],[15230,3],[15242,3],[15256,8],[15379,13],[15483,18],[15795,12],[15955,4],[15978,16],[16492,5],[16508,7],[16644,6],[16740,2],[16790,8],[16977,11],[17182,3],[17241,3],[17268,3],[17285,3],[17302,8],[17484,4],[17555,3],[17586,2],[17620,3],[17655,3],[17676,3],[17697,5],[17768,3],[17788,8],[18018,3],[18086,3],[18116,3],[18147,3],[18181,5],[18248,3],[18257,3],[18276,3],[18294,3],[18307,3],[18311,3],[18319,3],[18329,2],[18343,2],[18358,6],[18452,3],[18462,3],[18469,9],[18603,3],[18629,3],[18653,3],[18674,3],[18687,2],[18691,3],[18727,5],[18829,3],[18876,5],[18899,3],[18916,14],[19200,13],[19397,3],[19440,4],[19523,3],[19559,3],[19591,7],[19645,3],[19660,3],[19695,3],[19713,3],[19746,3],[19757,3],[19776,3],[19784,3],[19800,3],[19811,10],[20029,3],[20042,3],[20046,2],[20057,2],[20069,5],[20088,5],[20109,3],[20166,5],[20177,2],[20201,5],[20209,5],[20217,2],[20229,2],[20239,2],[20257,3],[20278,4],[20314,7],[20449,10],[20639,6],[20674,3],[20739,3],[20754,3],[20813,3],[20843,3],[20871,3],[20879,3],[20887,1],[20913,5],[20933,4],[21008,3],[21041,3],[21071,5],[21096,3],[21162,3],[21176,3],[21187,5],[21286,4],[21415,3],[21439,3],[21485,3],[21518,3],[21547,5],[21579,3],[21615,3],[21641,3],[21669,3],[21691,5],[21701,3],[21734,3],[21754,6],[21769,2],[21777,2],[21785,5],[21823,3],[21833,3],[21849,5],[21900,3],[21925,6],[22034,3],[22074,3],[22115,5],[22165,6],[22302,3],[22321,3],[22346,3],[22364,7],[22400,3],[22416,6],[22462,3],[22470,8],[22527,5],[22556,3],[22571,3],[22621,3],[22637,3],[22655,3],[22684,3],[22703,3],[22722,6],[22801,5],[22816,14],[22980,3],[23001,3],[23009,3],[23028,3],[23044,4],[23100,3],[23132,3],[23215,3],[23249,3],[23278,3],[23295,3],[23312,3]] + ,[[0,181],[4042,3],[4087,3],[4095,3],[4099,3],[4112,3],[4127,3],[4139,2],[4168,3],[4200,2],[4217,4],[4279,5],[4315,3],[4322,5],[4380,4],[4446,3],[4501,3],[4512,4],[4577,9],[4646,5],[4723,5],[4790,4],[4846,8],[5018,8],[5175,3],[5224,3],[5270,6],[5355,3],[5379,7],[5493,11],[5792,4],[5852,3],[5877,3],[5939,4],[6010,6],[6074,3],[6114,5],[6191,3],[6208,14],[6388,3],[6434,3],[6454,3],[6471,4],[6529,4],[6605,5],[6679,3],[6738,0],[6749,4],[6816,3],[6826,3],[6833,3],[6847,3],[6855,3],[6893,5],[6930,5],[6957,3],[6982,3],[7007,3],[7034,7],[7108,32],[7850,3],[7915,4],[8015,7],[8211,7],[8237,14],[8450,5],[8529,9],[8686,4],[8762,7],[8874,7],[8991,3],[9098,4],[9160,9],[9281,8],[9355,7],[9417,9],[9575,9],[9723,4],[9834,8],[10048,10],[10432,3],[10476,6],[10707,4],[10821,3],[10958,2],[10979,14],[11104,8],[11232,10],[11305,3],[11331,4],[11433,2],[11441,3],[11449,3],[11457,3],[11477,8],[11552,3],[11560,3],[11568,3],[11576,3],[11584,3],[11592,3],[11603,3],[11624,7],[11665,4],[11725,3],[11767,5],[11909,3],[11956,3],[11982,3],[12031,3],[12060,3],[12068,3],[12101,3],[12145,3],[12193,3],[12205,3],[12278,4],[12314,3],[12329,3],[12344,3],[12362,3],[12376,3],[12386,3],[12438,6],[12461,6],[12489,3],[12501,3],[12532,3],[12540,3],[12548,3],[12556,5],[12591,12],[12764,3],[12775,3],[12795,3],[12815,3],[12826,3],[12837,3],[12852,7],[12923,6],[12969,3],[12987,3],[12994,6],[13029,10],[13206,4],[13262,11],[13463,4],[13530,3],[13555,3],[13580,2],[13595,3],[13622,7],[13763,3],[13792,3],[13802,3],[13821,3],[13831,3],[13840,3],[13850,3],[13867,3],[13909,3],[13913,5],[13946,8],[14057,9],[14139,13],[14244,3],[14252,3],[14274,7],[14379,7],[14408,11],[14606,2],[14664,10],[14740,13],[14868,5],[14894,5],[14916,5],[14938,4],[14949,5],[14990,3],[15022,5],[15063,4],[15074,3],[15081,4],[15092,4],[15103,3],[15111,6],[15138,5],[15159,6],[15186,3],[15194,4],[15214,3],[15230,3],[15242,3],[15256,8],[15379,13],[15478,18],[15790,12],[15950,4],[15973,16],[16487,5],[16503,7],[16639,6],[16735,2],[16785,8],[16972,11],[17177,3],[17236,3],[17263,3],[17280,3],[17297,8],[17479,4],[17550,3],[17581,2],[17615,3],[17650,3],[17671,3],[17692,5],[17763,3],[17783,8],[18013,3],[18081,3],[18111,3],[18142,3],[18176,5],[18243,3],[18252,3],[18271,3],[18289,3],[18302,3],[18306,3],[18314,3],[18324,2],[18338,2],[18353,6],[18447,3],[18457,3],[18464,9],[18598,3],[18624,3],[18648,3],[18669,3],[18682,2],[18686,3],[18722,5],[18824,3],[18871,5],[18894,3],[18911,14],[19195,13],[19392,3],[19435,4],[19518,3],[19554,3],[19586,7],[19640,3],[19655,3],[19690,3],[19708,3],[19741,3],[19752,3],[19771,3],[19779,3],[19795,3],[19806,10],[20024,3],[20037,3],[20041,2],[20052,2],[20064,5],[20083,5],[20104,3],[20161,5],[20172,2],[20196,5],[20204,5],[20212,2],[20224,2],[20234,2],[20252,3],[20273,4],[20309,7],[20444,10],[20634,6],[20669,3],[20739,3],[20754,3],[20813,3],[20843,3],[20871,3],[20879,3],[20887,1],[20913,5],[20933,4],[21008,3],[21041,3],[21071,5],[21096,3],[21162,3],[21176,3],[21187,5],[21286,4],[21415,3],[21439,3],[21485,3],[21518,3],[21547,5],[21579,3],[21615,3],[21641,3],[21669,3],[21691,5],[21701,3],[21734,3],[21754,6],[21769,2],[21777,2],[21785,5],[21823,3],[21833,3],[21849,5],[21900,3],[21925,6],[22034,3],[22074,3],[22115,5],[22165,6],[22302,3],[22321,3],[22346,3],[22364,7],[22400,3],[22416,6],[22462,3],[22470,8],[22527,5],[22556,3],[22571,3],[22621,3],[22637,3],[22655,3],[22684,3],[22703,3],[22722,6],[22801,5],[22816,14],[22980,3],[23001,3],[23009,3],[23028,3],[23044,4],[23100,3],[23132,3],[23215,3],[23249,3],[23278,3],[23295,3],[23312,3]] ); // Use high-precision modulus (βš‡0) diff --git a/docs/commentary/stability.html b/docs/commentary/stability.html index 6c23680f..66d2b2a8 100644 --- a/docs/commentary/stability.html +++ b/docs/commentary/stability.html @@ -7,8 +7,9 @@

Is BQN stable?

The short answer is that code running online or in CBQN is unlikely to break. In rare cases we add experimental system values (the β€’ things) before we're ready to commit to a particular design; read further or check on the forums if you'd like to know the status of a particular system function. And we are still making some backwards-compatible additions of moderate importance to core BQN: see this page. So it's possible that that extra knowledge will be needed to keep up with BQN in the future, but only a small amount.

I have thousands of lines of running BQN code including the self-hosted sources, website generator, and Singeli compiler. There are also now many BQN examples and REPL links spread across the web which would be harder to change. So there is a strong reason to maintain compatibility for common or even moderately used features. Because BQN's been designed in a conservative way, avoiding fiddly decisions by keeping things simple, it seems that few compatibility breaks will be required. The history so far seems to bear this out.

-

Various edge cases were fixed when I first ran the primitive specifications through unit tests(!) in February 2021. Since then there has been a single compatibility break, that is, change from one intentional (i.e. excluding bugs) non-error behavior to a different behavior.

+

Various edge cases were fixed when I first ran the primitive specifications through unit tests(!) in February 2021. Since then there have been two compatibility breaks, that is, changes from one intentional (i.e. excluding bugs) non-error behavior to a different behavior.

System functions change more frequently. Some system functions are considered stable and others experimental. At the time of writing, the following seems to hold: system functions that are included in two out of three among the specification, JS REPL, and CBQN are stable. Others may or may not be stable; please ask about these on the forums (or by another channel) if you want to rely on them. Stable system functions are still much more likely to change than syntax or primitives. However, before making a change we'll try to find if there's code that relies on them and notify the owner. As this procedure doesn't scale well, if a system function reaches widespread use we'll be unwilling to change it without a strong reason.

diff --git a/rt.bqn b/rt.bqn index 764175e8..18933755 100644 --- a/rt.bqn +++ b/rt.bqn @@ -5,7 +5,7 @@ compile ← need β€’Import "src/c.bqn" glyphs ← ∾ β€’Import "src/glyphs.bqn" vm ← β€’Import "vm.bqn" -FillFn ← (βŠ‘1↑0↑β₯Š)⊘{π•©Λ™βŒΎβŠ’ <𝕨} +FillFn ← (βŠ‘1↑0↑β₯Š)⊘{π•©βŒΎ(⊒¨)π•©β‰’βŠΈβ₯Š<𝕨} _fillBy_ ← { r←𝕨𝔽x←𝕩 β‹„ G←𝔾 𝕨({ diff --git a/src/r1.bqn b/src/r1.bqn index a1980747..5e00e92e 100644 --- a/src/r1.bqn +++ b/src/r1.bqn @@ -505,8 +505,8 @@ under←{ sβ₯Š(↕l)2βŠΈβŒŠβ—ΆβŸ¨βŠ‘βŸœd,Adv,Adv{(𝕨CM(j-𝕩)⊸+βŠ‘vΛ™)βŒœβ†•π•©-1⋄𝕨}⊒⟩¨gl } _at_ ← {(↕≠𝕩)π”½βŸ((𝔾𝕩)=⊣)¨𝕩} - Set ← 0⊸{ (𝕨β‰₯β‰ root)β—ΆβŸ¨β‰’β₯Š(1+𝕨)βŠΈπ•Š_at_(π•¨βŠ‘rootΛ™)∘β₯Š, Set1⟩ 𝕩 } - IsArray∘rootβ—ΆβŸ¨0βŠ‘vΛ™, Set⟩ _fillBy_ ⊒ x + Set ← 0⊸{ (𝕨β‰₯β‰ root)β—ΆβŸ¨β‰’β₯Š(1+𝕨)βŠΈπ•Š_at_(π•¨βŠ‘rootΛ™)∘β₯Š, Set1⟩ _fillBy_ ⊒ 𝕩 } + IsArray∘rootβ—ΆβŸ¨0βŠ‘vΛ™, Set⟩ x } _indRec ← { -- cgit v1.2.3