about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* 2830 - bring back deleted test from 2829Kartik K. Agaram2016-04-103-9/+26
| | | | Issue 1 in 2829 is now fixed.
* 2829 - issues while switching to 'put'Kartik K. Agaram2016-04-104-51/+27
| | | | | | | | | | | | | | | | 1. It turns out we couldn't overload 'get' and 'get-address' until now, because transform_names looks for those names, and the resolve_ambiguous_calls transform happens before transform_names. Why does resolve_ambiguous_calls happen before transform_names? Because if my students made mistakes in the ingredients to an instruction they got overzealous errors from resolve_ambiguous_calls. Now this impacts 'put' as well, which is already overloaded for tables. Not sure what to do about this; I'm going to go back to the overzealous errors, and just teach students to visually scan past them for now. 2. I need addresses in a third place besides storing to containers and arrays, and managing the heap -- to synchronize routines. wait-for-location requires an address. Not sure what to do about this..
* 2828Kartik K. Agaram2016-04-101-3/+13
|
* 2827 - start replacing 'get-address' with 'put'Kartik K. Agaram2016-04-102-0/+79
| | | | | | | Current plan: - get rid of get-address and index-address, and therefore any address that is not address:shared - rename address:shared to just 'shared'
* 2826Kartik K. Agaram2016-04-101-4/+12
|
* 2825Kartik K. Agaram2016-04-101-2/+2
|
* 2824Kartik K. Agaram2016-04-102-11/+0
| | | | | Undo commit 9da3fc3118; looks like we don't need it anymore, and the test was poorly done. Let's see if we hit the error again.
* 2823Kartik K. Agaram2016-04-102-7/+7
|
* 2822Kartik K. Agaram2016-04-101-1/+1
|
* 2821 - addresses before containersKartik K. Agaram2016-04-102-63/+46
|
* 2820Kartik K. Agaram2016-04-011-1/+4
|
* 2819Kartik K. Agaram2016-03-311-2/+2
|
* 2818Kartik K. Agaram2016-03-283-7/+5
|
* 2817Kartik K. Agaram2016-03-282-52/+2
|
* 2816Kartik K. Agaram2016-03-273-3/+2
| | | | Move all bounds checks for types and recipes to one place.
* 2815Kartik K. Agaram2016-03-272-2/+2
|
* 2814Kartik K. Agaram2016-03-271-22/+22
|
* 2813Kartik K. Agaram2016-03-271-0/+4
|
* 2812Kartik K. Agaram2016-03-2799-2852/+3992
|
* 2811Kartik K. Agaram2016-03-271-4/+4
|
* 2810 - undo 2767, reclaiming local allocationsKartik K. Agaram2016-03-241-20/+25
| | | | | | | | | | | | | | | | | | | | | | | I realize that there's still a serious problem with refcounts. Everything's fine as long as I copy those shared addresses manually elsewhere, but there's a couple of places where I just do a memcopy right now without any extra smarts: in 'copy' and 'merge' instructions. I need to replace support for arbitrary types in these instructions, and replace it with transforms to generate the right code. Mu basically needs copy constructors and destructors, so that containers can decrement the refcounts of any elements (or elements of elements, or elements of elements of elements..) that are shared addresses. But my confidence in this whole approach is shaken. Maybe I should stop this project. It's turning into a language+OS design project where I was hoping that being a toy would shelter me from these concerns. I just want to explore turning manual tests into reproducible automatic ones. Maybe I should just build libraries for each interface to hardware (network, disk, screen, keyboard, ...) in C++11 or something. Use no high-level libraries for sockets, files, etc. Instead rely on just the kernel syscalls, memory allocator, RAII, STL. Build things from scratch atop those building blocks.
* 2809Kartik K. Agaram2016-03-231-0/+2
|
* 2808 - quick fix for memory corruptionKartik K. Agaram2016-03-221-9/+7
| | | | | | | | | | Thanks Caleb for finding this. Repeatedly running sandboxes was in some reliably reproducing situations causing 'new' to return 1, or to run into writes to the free list. No test yet; the issue is likely only mitigated at this point, not fixed. Even if routines share the Free_list, that should probably not cause memory corruption.
* 2807 - exclude .traces/ and html/ in 'git log'Kartik K. Agaram2016-03-221-0/+8
|
* 2806 - bugfix: cleaning up in 'reload'Kartik K. Agaram2016-03-213-10/+39
| | | | | | | | | | | | | | | This brings back some of the complexity I thought I'd gotten rid of in 2799. The regression brought home the point that I'd forgotten to write tests for those bits. Written now. It also brought home the point that our cleanup in 'reload' has always been hacky and incomplete. It's also ugly that those tests in the sandbox/ and edit/ apps need changing (particularly when the test is about how the output doesn't change).
* 2805Kartik K. Agaram2016-03-211-4/+4
| | | | Fix test failures caused by 2804 in sandbox/ app.
* 2804 - support stashing arraysKartik K. Agaram2016-03-214-13/+50
| | | | | Now to extend 'stash' for arrays, just extend array-to-text-line instead and perform the lookup inside it.
* 2803Kartik K. Agaram2016-03-2138-249/+264
| | | | | Show more thorough information about instructions in the trace, but keep the original form in error messages.
* 2802 - default support for stashing new typesKartik K. Agaram2016-03-211-0/+36
| | | | | Don't let rewrite_stash transform working programs into non-working ones.
* 2801 - bring back the 'rewrite_stash' transformKartik K. Agaram2016-03-201-0/+50
| | | | Next I'll start improving it.
* 2800 - remove a gotcha when writing testsKartik K. Agaram2016-03-201-1/+6
| | | | | | | | | Several times now I've wasted time tracking down a failing test only to eventually remember that order of definition matters in tests even though it doesn't elsewhere -- I've been having tests implicitly start running the first function defined in them. Now I stop doing that if a test defines a function called 'main', and just start the test at main instead.
* 2799 - new approach to undoing changes in testsKartik K. Agaram2016-03-2010-187/+92
| | | | | | | | As outlined at the end of 2797. This worked out surprisingly well. Now the snapshotting code touches fewer layers, and it's much better behaved, with less need for special-case logic, particularly inside run_interactive(). 30% slower, but should hopefully not cause any more bugs.
* 2798 - experiment: split channels into two endsKartik K. Agaram2016-03-194-189/+231
| | | | | | | | | | This way when you pass one end to a function or routine, you can implicitly give it the right to either read or write the channel, but not both. The cost: code gets more convoluted, names get more convoluted. You can see this in particular in the test for buffer-lines. Let's see how it goes..
* 2797 - bugfix: transform can create recipesKartik K. Agaram2016-03-192-2/+9
| | | | | | | | | | | | | | | | | | | | | When I started to make channels generic in 2784, I introduced an infinite loop when running until just layer 72. This happens because transform_all() can create new recipes while specializing, and these were getting added to Recently_added_recipes and then deleted. I didn't notice until now because layer 91 was clearing Recently_added_recipes soon after. Solution: make calls to transform_all after calls to load_permanently also clear Recently_added_recipes like load_permanently does. No transforms yet create new types. If they do we'll need to start handling the other Recently_added_* variables as well. I should rethink this whole approach of tracking changes to global state while running tests, and undoing such changes. Ideally I wouldn't need to manually track changes for each global. I should just encapsulate all global state in an object, copy it for each test and delete the copy when I'm done.
* 2796Kartik K. Agaram2016-03-191-5/+0
|