about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 2880Kartik K. Agaram2016-04-275-22/+59
| | | | | | | | | | | Turns out we don't need a primitive to return an empty value of arbitrary type. Just create it on the heap using 'new'. But this uncovered *yet* another bug, sigh. When I specialize generic functions I was running all transforms on the generated functions after specialization completed. But there's one transform that includes code from elsewhere. If such code included type-ingredients -- kaboom. Now fixed and there's a test, so I've got that going for me which is nice.
* 2879 - allow extending shape-shifting containersKartik K. Agaram2016-04-273-8/+61
|
* 2878Kartik K. Agaram2016-04-272-12/+2
|
* 2877Kartik K. Agaram2016-04-271-1/+1
|
* 2876Kartik K. Agaram2016-04-271-1/+1
|
* 2875Kartik K. Agaram2016-04-2710-135/+212
|
* 2874Kartik K. Agaram2016-04-275-37/+37
| | | | | | Be more consistent that 'return' is the name of the instruction, and 'reply' just a synonym. Maybe I should take it out. It wouldn't affect the recipe/ingredient terminology while I teach..
* 2873 - fix a bug in converting conditional returnsKartik K. Agaram2016-04-275-74/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was an interaction between two transforms. The first turned: return-if ... into: jump-unless ..., 1:offset # skip next instruction return ... The second added an unconditional return at the end of the recipe if it didn't already exist (so that functions always end with a return). However, it was getting confused by the return instructions generated above, which look unconditional but sometimes get skipped. To fix this, conditional returns are now transformed into this: { break-unless ... return ... } Since the final instruction is now no longer a reply (but rather the '}' label), the second transform triggers and adds the unconditional return after it. This commit removes the final place marked 'BUG:' in the codebase yesterday (see commit 2870).
* 2872 - tangle directive spurious errors fixedKartik K. Agaram2016-04-272-26/+17
|
* 2871 - downgrade one bug and explain anotherKartik K. Agaram2016-04-271-2/+5
|
* 2870 - fix the final long-standing failing testKartik K. Agaram2016-04-274-3/+60
| | | | | | | | | | | | | | | | | The solution for avoiding deadlock is for routines to close channels before they exit. So that's good. Once I implemented 'close', I also found and fixed 2 unrelated bugs in chessboard.mu: a) one long-missed and long-masked case of forgetting to store character literals in character variables b) one typo in translating get-address to put So that's good. What's not so good: in the process of fixing this I've found three unrelated bugs (marked 'BUG:' in the changes). All three have workarounds, so existing tests pass for now. But they are my top priority next.
* 2869Kartik K. Agaram2016-04-261-39/+39
|
* 2868Kartik K. Agaram2016-04-251-1/+1
|
* 2867Kartik K. Agaram2016-04-252-12/+18
|
* 2866Kartik K. Agaram2016-04-2564-4971/+4952
|
* 2865Kartik K. Agaram2016-04-241-1/+1
|
* 2864 - replace all address:shared with just addressKartik K. Agaram2016-04-2464-4392/+4413
| | | | | | | Now that we no longer have non-shared addresses, we can just always track refcounts for all addresses. Phew!
* 2863Kartik K. Agaram2016-04-248-303/+465
| | | | | Finally after much massaging, the 'address' and 'new' layers are adjacent.
* 2862Kartik K. Agaram2016-04-247-33/+40
| | | | | Layers 0-29 are now a complete rudimentary platform except for pointers and indirection.
* 2861 - 'maybe-convert' no longer returns addressKartik K. Agaram2016-04-2323-263/+322
|
* 2860 - rename 'index-address' to 'put-index'Kartik K. Agaram2016-04-239-99/+78
|
* 2859 - rename 'get-address' to 'get-location'Kartik K. Agaram2016-04-235-148/+143
| | | | | | This reinfoces that it's only really intended to be used by 'wait-for-location'. To reinforce that we also move it to the same layer as 'wait-for-location'.
* 2858 - temporarily delete immutability checksKartik K. Agaram2016-04-231-481/+0
| | | | | This pass will need redesigning for 'put'. But let's get rid of get-address first..
* 2857Kartik K. Agaram2016-04-231-2/+1
|
* 2856Kartik K. Agaram2016-04-231-1/+1
|
* 2855Kartik K. Agaram2016-04-222-18/+21
|
* 2854 - purge get-address from sandbox/ appKartik K. Agaram2016-04-2211-589/+644
|
* 2853 - purge get-address from edit/ appKartik K. Agaram2016-04-2211-470/+563
| | | | Phew!
* 2852Kartik K. Agaram2016-04-211-1/+2
|
* 2851Kartik K. Agaram2016-04-211-109/+109
|
* 2850Kartik K. Agaram2016-04-202-6/+24
|
* 2849Kartik K. Agaram2016-04-202-3/+23
|
* 2848Kartik K. Agaram2016-04-202-2/+42
| | | | | | Turns out one of my chessboard tests has been silently deadlocking and therefore not actually checking its results since at least commit 1620 last June.
* 2847Kartik K. Agaram2016-04-203-12/+14
|
* 2846Kartik K. Agaram2016-04-203-13/+13
|
* 2845Kartik K. Agaram2016-04-161-17/+8
|
* 2844 - purge get-address from all layersKartik K. Agaram2016-04-162-47/+45
| | | | | Only apps left now, and the wait-for-location uses in the channel primitives.
* 2843 - purge get-address until layer 83Kartik K. Agaram2016-04-161-26/+14
|
* 2842 - purge get-address until layer 80Kartik K. Agaram2016-04-162-14/+11
|
* 2841 - purge get-address until layer 76Kartik K. Agaram2016-04-161-62/+72
|
* 2840Kartik K. Agaram2016-04-162-5/+5
|
* 2839 - get-address purged until layer 75Kartik K. Agaram2016-04-161-4/+1
|
* 2838Kartik K. Agaram2016-04-161-1/+1
|
* 2837 - fix up 2836Kartik K. Agaram2016-04-151-2/+22
| | | | | | On reflection I think I'd rather add a duplicate test that's closer to how I discovered the problem, without the masking bug in type-matching that was masking the simpler test in the previous commit.
* 2836 - arcane bug in generic functionsKartik K. Agaram2016-04-152-0/+37
| | | | Thanks Caleb Couch for finding and reporting this.
* 2835 - continue replacing 'get-address' with 'put'Kartik K. Agaram2016-04-151-14/+21
| | | | | | | | | | I have a tack now for issue 2 of 2829 (dealing with wait-for-location): have get-address and index-address return a type that can't be looked up. That way the worst that can happen with an address pointing to a freed location is a routine that randomly hangs and starts working again. And even that won't happen if you disallow transferring the new type across routines in ingredients or channels, just like I plan to do with 'address:shared'.
* 2834 - make 'wait-for-location' more intuitiveKartik K. Agaram2016-04-152-11/+18
| | | | | | | Previously to watch an address we had to perform a lookup of it, which the instruction then proceeded to undo. This way wait-for-instruction no longer supports literal ingredients, but the real-world usage becomes cleaner.
* 2833Kartik K. Agaram2016-04-141-1/+4
|
* 2832 - support static arrays in rewrite_stashKartik K. Agaram2016-04-131-2/+18
| | | | Thanks Ella and Caleb for finding this.
* 2831 - bugfix in static arraysKartik K. Agaram2016-04-132-10/+41
| | | | | | | | | | | I'd started using size_of() in transforms at some point, but not gotten around to actually updating it to support arrays before run-time. Wish there was a way I could statically enforce that something is only called at transform time vs runtime. Thanks Ella and Caleb Couch for finding this issue. Static arrays are likely still half-baked, but should get a thorough working-over in coming weeks.