about summary refs log tree commit diff stats
path: root/029tools.cc
Commit message (Collapse)AuthorAgeFilesLines
* 3163Kartik K. Agaram2016-08-091-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | Experimental: kinda support $print in console mode. It's not perfect and probably will never be, because 'cout' buffers differently from termbox primitives, which can cause console-aware newlines to show up before other (console-oblivious) prints, like in this example program: def main [ open-console $print [abc], 10/newline $print [def], 10/newline wait-for-some-interaction close-console ] And then there's the problem that there's no way for cout to update Display_column. So mixing $print and print will be confusing. Perhaps we should just not mess with Display_* variables inside $print? But then we'll only ever be able to see a single line of $print at a time.
* 3120Kartik K. Agaram2016-07-211-2/+2
| | | | | | | | Always show instruction before any transforms in error messages. This is likely going to make some errors unclear because they *need* to show the original instruction. But if we don't have tests for those situations did they ever really work?
* 3101 - purge .traces/ dir from repo historyKartik K. Agaram2016-07-051-2/+2
| | | | | | | | | | | | | | | | | | | | | I'd been toying with this idea for some time now given how large the repo had been growing. The final straw was noticing that people cloning the repo were having to wait *5 minutes*! That's not good, particularly for a project with 'tiny' in its description. After purging .traces/ clone time drops to 7 seconds in my tests. Major issue: some commits refer to .traces/ but don't really change anything there. That could get confusing :/ Minor issues: a) I've linked inside commits on GitHub like a half-dozen times online or over email. Those links are now liable to eventually break. (I seem to recall GitHub keeps them around as long as they get used at least once every 60 days, or something like that.) b) Numbering of commits is messed up because some commits only had changes to the .traces/ sub-directory.
* 2998Kartik K. Agaram2016-05-241-3/+7
|
* 2990Kartik K. Agaram2016-05-201-6/+6
| | | | | | | | | | Standardize quotes around reagents in error messages. I'm still sure there's issues. For example, the messages when type-checking 'copy'. I'm not putting quotes around them because in layer 60 I end up creating dilated reagents, and then it's a bit much to have quotes and (two kinds of) brackets. But I'm sure I'm doing that somewhere..
* 2954 - bugfix: $systemKartik K. Agaram2016-05-111-1/+4
| | | | The actual fix is in the layer rewriting literal strings.
* 2932Kartik K. Agaram2016-05-061-1/+1
| | | | | | | More consistent labeling of waypoints. Use types only when you need to distinguish between function overloadings. Otherwise just use variable names unless it's truly not apparent what they are (like that the result is a recipe in "End Rewrite Instruction").
* 2850Kartik K. Agaram2016-04-201-0/+18
|
* 2803Kartik K. Agaram2016-03-211-2/+2
| | | | | Show more thorough information about instructions in the trace, but keep the original form in error messages.
* 2773 - switch to 'int'Kartik K. Agaram2016-03-131-6/+6
| | | | This should eradicate the issue of 2771.
* 2735 - define recipes using 'def'Kartik K. Agaram2016-03-081-5/+5
| | | | | | | | | | | | I'm dropping all mention of 'recipe' terminology from the Readme. That way I hope to avoid further bike-shedding discussions while I very slowly decide on the right terminology with my students. I could be smarter in my error messages and use 'recipe' when code uses it and 'function' otherwise. But what about other words like ingredient? It would all add complexity that I'm not yet sure is worthwhile. But I do want separate experiences for veteran programmers reading about Mu on github and for people learning programming using Mu.
* 2712Kartik K. Agaram2016-02-261-8/+8
|
* 2704 - eradicate all mention of warnings from coreKartik K. Agaram2016-02-251-2/+0
|
* 2685Kartik K. Agaram2016-02-191-2/+2
| | | | | | | | | | | | | | | | Stack of plans for cleaning up replace_type_ingredients() and a couple of other things, from main problem to subproblems: include type names in the type_tree rather than in the separate properties vector make type_tree and string_tree real cons cells, with separate leaf nodes redo the vocabulary for dumping various objects: do we really need to_string and debug_string? can we have a version with *all* information? can we have to_string not call debug_string? This commit nibbles at the edges of the final task, switching from member method syntax to global function like almost everything else. I'm mostly using methods just for STL in this project.
* 2623 - bugfix: editing sandboxesKartik K. Agaram2016-02-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you restore 2 sandboxes, the first render was setting response-starting-row-on-screen on both, without ever rendering a response. If the lower sandbox contained a print and rendered the screen instead of the response, the original response-starting-row-on-screen was never reset. If the process of running the sandboxes caused the lower sandbox's title bar to move below the now-stale response-starting-row-on-screen[1], editing the lower sandbox no longer works. [1] (Either because the upper sandbox prints to screen as well (causing the first F4 to move the lower sandbox down by several lines), or because a fresh sandbox is created with several lines before the first F4 is hit.) Current solution: never set response-starting-row-on-screen during reload (or otherwise when there's no response). This is hard to test right now because 'restore' is not a tested interface, and I can't come up with another situation where the response-starting-row-on-screen goes stale. So I'm now trying to keep all changes to response-starting-row-on-screen close together. Another idea is to add a check that the click row lies below the response-starting row *and* above the start of the next sandbox. (But what if there's no next sandbox?) (This bug is really a regression, introduced last Sep in 2163.)
* three bugs fixedKartik K. Agaram2015-12-151-0/+26
| | | | | | | | | | | | | | | | | - notes bug in edit/ triggers in immutable but not master branch bug triggered by changes to layer 059: we're finding an unspecialized call to 'length' in 'append_6' hard to debug because trace isn't complete just bring out the big hammer: use a new log file length_2 from recipes.mu is not being deleted (bug #1) so reload doesn't switch length to length_2 when variant_already_exists (bug #2) so we end up saving in Recipe for a primitive ordinal so no valid specialization is found for 'length' (bug #3) why doesn't it trigger in a non-interactive scenario? argh, wasn't checking for an empty line at end. ok, confidence restored.
* 2490Kartik K. Agaram2015-11-281-1/+1
|
* 2475 - allow addresses to be converted to numbersKartik K. Agaram2015-11-271-2/+1
| | | | It's just the other direction we want to avoid.
* 2445 - dispatch between shape-shifting variantsKartik K. Agaram2015-11-151-0/+1
| | | | | Starting to leave debug prints around once again, just in case one of them is worth promoting to the trace..
* 2377 - stop using operator[] in mapKartik K. Agaram2015-11-061-20/+20
| | | | | | | | | | | | | | | | I'm still seeing all sorts of failures in turning on layer 11 of edit/, so I'm backing away and nailing down every culprit I run into. First up: stop accidentally inserting empty objects into maps during lookups. Commands run: $ sed -i 's/\(Recipe_ordinal\|Recipe\|Type_ordinal\|Type\|Memory\)\[\([^]]*\)\] = \(.*\);/put(\1, \2, \3);/' 0[1-9]* $ vi 075scenario_console.cc # manually fix up Memory[Memory[CONSOLE]] $ sed -i 's/\(Memory\)\[\([^]]*\)\]/get_or_insert(\1, \2)/' 0[1-9]* $ sed -i 's/\(Recipe_ordinal\|Type_ordinal\)\[\([^]]*\)\]/get(\1, \2)/' 0[1-9]* $ sed -i 's/\(Recipe\|Type\)\[\([^]]*\)\]/get(\1, \2)/' 0[1-9]* Now mu dies pretty quickly because of all the places I try to lookup a missing value.
* 2347Kartik K. Agaram2015-11-021-0/+2
|
* 2313Kartik K. Agaram2015-10-291-2/+2
|
* 2272Kartik K. Agaram2015-10-191-2/+18
|
* 2271 - bugfix: traces cross-contaminating errorsKartik K. Agaram2015-10-191-1/+1
| | | | | | | | | | | | | | | | | | There were several places where we push a call on to a routine without incrementing call-stack depth, which was used to compute the depth at which to trace an instruction. So sometimes you ended up one depth lower than you started a call with. Do this enough times and instructions that should be traced at level 100 end up at level 0 and pop up as errors. Solution: since call-stack depth is only used for tracing, include it in the trace stream and make sure we reset it along with the trace stream. Then catch all places where we forget to increment call-stack depth and make sure we catch such places in the future. When I first ran into this with Caleb I thought there must be some way that we're writing some output into the warnings result. I didn't recognize that the spurious output as part of the trace, just at the wrong level.
* 2260 - start tracing by depth rather than labelKartik K. Agaram2015-10-061-7/+6
| | | | Now we can collect all traces, just modulating the depth.
* 2258 - separate warnings from errorsKartik K. Agaram2015-10-061-21/+21
| | | | | | | At the lowest level I'm reluctantly starting to see the need for errors that stop the program in its tracks. Only way to avoid memory corruption and security issues. But beyond that core I still want to be as lenient as possible at higher levels of abstraction.
* 2253 - start reorganizing tracesKartik K. Agaram2015-10-051-31/+0
|
* 2232Kartik K. Agaram2015-10-011-0/+44
|
* 2226 - standardize warning formatKartik K. Agaram2015-10-011-7/+7
| | | | | | | | Always show recipe name where error occurred. But don't show internal 'interactive' name for sandboxes, that's just confusing. What started out as warnings are now ossifying into errors that halt all execution. Is this how things went with C and Unix as well?
* 2225Kartik K. Agaram2015-10-011-18/+30
|
* 2199 - stop printing numbers in scientific notationKartik K. Agaram2015-09-141-2/+2
| | | | | | | | | | | Turns out the default format for printing floating point numbers is neither 'scientific' nor 'fixed' even though those are the only two options offered. Reading the C++ standard I found out that the default (modulo locale changes) is basically the same as the printf "%g" format. And "%g" is basically the shorter of: a) %f with trailing zeros trimmed b) %e So we'll just do %f and trim trailing zeros.
* 2095Kartik K. Agaram2015-08-281-1/+0
| | | | | | | | | | | | Finally terminate the experiment of keeping debug prints around. I'm also going to give up on maintaining counts. What we really need is two kinds of tracing: a) For tests, just the domain-specific facts, organized by labels. b) For debugging, just transient dumps to stdout. b) only works if stdout is clean by default. Hmm, I think this means 'stash' should be the transient kind of trace.
* 2079Kartik K. Agaram2015-08-261-20/+0
| | | | Cleanup 2078.
* 2078 - update entire screen on tb_present()Kartik K. Agaram2015-08-261-0/+20
| | | | | | | | | | | | | | | | | | | Termbox had been taking shortcuts when it thinks the screen hasn't changed, which doesn't work if some other process messes up the screen. The Go version has a Sync method in addition to Flush/tb_present for precisely this eventuality. But it feels like an unnecessary optimization given C's general speed. Just drop it altogether. --- This took me a long time to track down, and interestingly I found myself writing a new tracing primitive before I remembered how to selectively trace just certain layers during manual tests. I'm scared of generating traces not because of performance but because of the visual noise. Be aware of this. I'm going to clean up $log now. Maybe I should also stop using $print..
* 2064Kartik K. Agaram2015-08-241-3/+3
| | | | Adjust spaces in 'stash'.
* 1990 - extra ingredient for 'trace' depthKartik K. Agaram2015-08-131-8/+18
| | | | Now we can make use of all the depths from 1 to 99.
* 1989 - drop the default label for 'trace'Kartik K. Agaram2015-08-131-21/+8
|
* 1975 - let's start using traces in lessonsKartik K. Agaram2015-08-101-0/+47
| | | | | More friendly way to 'stash' stuff in the trace so that you can toggle lines of code to see their stashed traces.
* 1974Kartik K. Agaram2015-08-101-0/+6
|
* 1923Kartik K. Agaram2015-08-021-1/+1
| | | | | | | | | | Still iterating on the right way to handle incorrect number of ingredients. My first idea of creating null results doesn't really work once they're used in later instructions. Just add a warning at one place in the run loop, but otherwise only add products when there's something to save in them. Undoes some work around commit 1886.
* 1922Kartik K. Agaram2015-08-021-1/+1
|
* 1921 - show trace by clicking on codeKartik K. Agaram2015-08-021-8/+15
| | | | | | | Region to click on to edit is now reduced to just the menu bar for the sandbox (excluding the 'x' for deleting the sandbox). The symmetry there might be useful, but we'll see if the relative click area is in line with how commonly the actions are performed.
* 1886 - gracefully handle malformed ingredientsKartik K. Agaram2015-07-291-1/+1
| | | | | | | | For example: x:number <- index y:address:array:number, 3 (forgetting to do a lookup) Thanks Caleb Couch.
* 1871Kartik K. Agaram2015-07-281-3/+0
|
* 1868 - start using naked literals everywhereKartik K. Agaram2015-07-281-1/+1
| | | | First step to reducing typing burden. Next step: inferring types.
* 1867 - keep tests from corrupting lesson/ directoryKartik K. Agaram2015-07-281-1/+4
|
* 1864Kartik K. Agaram2015-07-281-11/+0
|
* 1860 - new primitive: $systemKartik K. Agaram2015-07-271-0/+216
Also reorganize my miscellaneous hacky primitives.