{"push_id":1879688068,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"81e113bfd3131eb9c8faf8a8f99cdf0bc42eef66","before":"4d2fed37758a5cf2426d292a25436e23b95bd895","commits":[{"sha":"81e113bfd3131eb9c8faf8a8f99cdf0bc42eef66","author":{"name":"Brian Dickens","email":"1d28577c3a34c1ac08d512237ad32156e7267b61@hostilefork.com"},"message":"ENSURE => REALLY, restoring ENSURE to original concept\n\nRen-C changed SET-WORD!-based assignments to allow voids without error.\n\n    x: () ;-- legal\n\nThere were numerous advantages to allowing this, though it did remove\none potential \"safety\" check.  So ENSURE was introduced:\n\n    >> x: ensure 3\n    == 3\n\n    >> x: ensure () ;-- error\n\nThough in a type-unsafe system, it's hard to say how a variable being\nvoid is that much worse than if it's an integer and you were expecting.\nSo a \"test dialect\" started emerging.  This led to two different\nrity-2 constructs: MAYBE and ENSURE\n\n    >> x: ensure [integer! string!] \"hi\"\n    == \"hi\"\n\n    >> x: ensure [integer! string!] <some-tag> ;- error\n\n    >> x: maybe [integer! string!] \"hi\"\n    == \"hi\"\n\n    >> x: maybe [integer! string!] <some-tag>\n    == _\n\nHence MAYBE and ENSURE were parallel functions, one of which would pass\nthrough values that matched the test or return a blank, while the\nother would error.\n\nYet the initial desire, to simply be able to make sure a value isn't\nvoid (or blank) remained.  It needed a short name.  This switches it\naround so that REALLY is the arity-2 complement to MAYBE, while ENSURE\nresumes its initial definition.  If ENSURE is used then it makes sure\nthe value is not a blank or a void before passing through, while if\nENSURE/ONLY or ENSURE* is used, it only rejects void.\n\nThis creates a backwards-incompatible change for building with older\nRen-Cs, since ENSURE is used in bootstrap.  Hence, it has to be\nshimmed in r2r3-future.r.  Hopefully not too many such situations will\npop up going forward (technically the REALLY checks could just be\nremoved if needed, but they are helpful.)\n\nAdds DEFAULT* and UPDATE* primitives to treat BLANK! as a value.\n\nChanges COLLECT's return result to ANY-SERIES!, because for reasons\nunknown it was set to just BLOCK!.","distinct":true,"url":"https://api.github.com/repos/metaeducation/ren-c/commits/81e113bfd3131eb9c8faf8a8f99cdf0bc42eef66"}]}
{"actor":{"display_login":"hostilefork"}}