about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 2882 - warn if programmer overuses transform_all()Kartik K. Agaram2016-04-284-21/+68
| | | | | | | | | | | | | | | | | | | | This continues a line of thought sparked in commit 2831. I spent a while trying to avoid calling size_of() at transform-time, but there's no getting around the fact that translating names to addresses requires knowing how much space they need. This raised the question of what happens if the size of a container changes after a recipe using it is already transformed. I could go down the road of trying to detect such situations and redoing work, but that massively goes against the grain of my original design, which assumed that recipes don't get repeatedly transformed. Even though we call transform_all() in every test, in a non-testing run we should be loading all code and calling transform_all() just once to 'freeze-dry' everything. But even if we don't want to support multiple transforms it's worth checking that they don't occur. This commit does so in just one situation. There are likely others.
* 2881 - disallow recipe literals in conditional jumpsKartik K. Agaram2016-04-282-3/+32
| | | | | | | If you accidentally use a recipe name in an ingredient you usually get an error because types don't match. But jumps need to be flexible enough to support both addresses and booleans, so they were accepting recipe literals as well. Now a useful error results.
* 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
|