about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 3190Kartik K. Agaram2016-08-161-2/+7
| | | | | | | | | | | | I'm seeing *extremely* rare crashes due to some problem with negative refcounts in the edit/ app. It's not using any concurrency at all, so that's not the issue. Setting a tripwire to try and catch it. I'm going to run: mu --trace edit ..all the time for a while. And periodically restart when the trace makes the program too sluggish to continue.
* 3189Kartik K. Agaram2016-08-141-2/+1
|
* 3188Kartik K. Agaram2016-08-141-2/+2
|
* 3187Kartik K. Agaram2016-08-141-0/+0
|
* 3186 - handle 'new-buffer' without ingredientsKartik K. Agaram2016-08-141-0/+14
|
* 3185Kartik K. Agaram2016-08-141-1/+1
|
* 3184Kartik K. Agaram2016-08-141-0/+2
| | | | Fix CI. How does it work on my Mac without explicitly including errno?
* 3183 - cleanupKartik K. Agaram2016-08-132-39/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | - New plan Primitives: $open-file-for-reading $open-file-for-writing $read-from-file $write-to-file $close-file The '$' prefix indicates that none of these are intended to be used directly since they rely on type-system-busting numbers. Also that they are just temporary hacks depending on primitives provided by the host system. A putative 'Mu machine' would have very different primitives. Testable interfaces: - start-reading: starts a routine to read from a file and returns the source where the contents will become available. - start-writing: starts a routine to write to a file and returns the sink where the contents can be provided. Both operate on the real file-system if the first 'filesystem' ingredient is 0. Once you start them up you can read/write/close the channel as usual.
* 3182 - primitives for manipulating the file systemKartik K. Agaram2016-08-132-9/+176
| | | | | | | | | | | | | | I don't know why this took so long to gel. I just needed to copy my approach to screen management: 1. primitives layer (C++): simple, non-testable, non-safe operations. 2. wrappers layer (Mu): wrap operations with dependency-injected versions that can take a fake file system. 3. scenario layer (C++): implement assume-filesystem that constructs a fake file system. 4. scenario test layer (Mu): test out assume-filesystem in a test. This commit implements step 1.
* 3181Kartik K. Agaram2016-08-132-32/+32
|
* 3180 - safer way to slurp() from fileKartik K. Agaram2016-08-131-9/+4
|
* 3179Kartik K. Agaram2016-08-131-2/+2
|
* 3178Kartik K. Agaram2016-08-133-3/+10
|
* 3177Kartik K. Agaram2016-08-132-2/+3
| | | | Systematize all the newlines while displaying test progress.
* 3176Kartik K. Agaram2016-08-131-7/+9
| | | | Don't print the header for 'Mu tests' if there are no Mu tests to run.
* 3175Kartik K. Agaram2016-08-131-1/+0
|
* 3174Kartik K. Agaram2016-08-1212-93/+178
|
* 3173Kartik K. Agaram2016-08-121-23/+23
|
* 3172Kartik K. Agaram2016-08-122-4/+4
| | | | Fix CI.
* 3171 - new commandline flag: --traceKartik K. Agaram2016-08-121-2/+11
| | | | | | | | The edit/ app without tracing turned on takes 22s to load up a reasonably complex file and run 12 scenarios. Turn on tracing, and it takes 68s. Turn on tracing just for app-level stashes, and it still takes 40s. That's too much overhead, so let's keep it turned off by default but give students an option to enable it at the commandline.
* 3170 - multiple --options at the commandlineKartik K. Agaram2016-08-123-28/+53
| | | | | | | | The mu commandline now has four parts: options, commands (of which we only have one so far: 'test'), files/directories and ingredients to pass to 'main'. That cleans up the hacky ordering constraint we had earlier. I've also cleaned up the usage message.
* 3169Kartik K. Agaram2016-08-121-15/+19
| | | | | Fix a bug with --test-only-app: the "App tests" header was only printing after some app tests had run.
* 3168 - skip loading recipe 'main' in edit/Kartik K. Agaram2016-08-128-28/+46
| | | | | | | This is part of efforts to allow students to transition gradually from the sandbox to running programs directly on the commandline, writing real scenarios, etc. Running on the commandline requires 'main', but overriding 'main' would mess up edit/ which is itself a Mu program.
* 3167Kartik K. Agaram2016-08-121-0/+6
|
* 3166Kartik K. Agaram2016-08-121-0/+7
|
* 3165Kartik K. Agaram2016-08-101-1/+1
|
* 3164Kartik K. Agaram2016-08-091-0/+1
| | | | | Have $print in console mode rotate through the screen rather than simply block at the bottom.
* 3163Kartik K. Agaram2016-08-092-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* 3162Kartik K. Agaram2016-08-091-3/+5
|
* 3161Kartik K. Agaram2016-08-091-5/+0
| | | | | | | | | Toss out Scenario_names. It's only checking if we load duplicate scenarios, and we have independent checks for *running* duplicate scenarios. This has the salubrious effect of also allowing lessons to contain regular text scenarios interspersed with their recipes.
* 3160Kartik K. Agaram2016-08-091-9/+1
| | | | Thanks Ella Couch for running into this source of crashes.
* 3159 - pause the lambda->mu translator for a bitKartik K. Agaram2016-08-071-0/+18
| | | | | | | | I'm going to focus on two projects for a while: a) the testable interface for file system and network b) a compiler translating some language to x86 b) might require first gaining some experience programming in Assembly.
* 3158Kartik K. Agaram2016-07-2746-319/+1162
|
* 3157 - more testable 'random' interfaceKartik K. Agaram2016-07-272-4/+59
| | | | Shouldn't break any existing programs using 'random'.
* 3156Kartik K. Agaram2016-07-272-19/+30
| | | | Make 'stream' generic.
* 3155Kartik K. Agaram2016-07-272-4/+4
|
* 3154 - reorg before making 'random' more testableKartik K. Agaram2016-07-2710-0/+0
|
* 3153Kartik K. Agaram2016-07-241-2/+4
|
* 3152Kartik K. Agaram2016-07-241-16/+32
|
* 3151Kartik K. Agaram2016-07-241-1/+3
|
* 3150 - done with parser for s-expressionsKartik K. Agaram2016-07-241-3/+78
|
* 3149Kartik K. Agaram2016-07-241-3/+3
|
* 3148Kartik K. Agaram2016-07-241-0/+17
|
* 3147Kartik K. Agaram2016-07-241-18/+18
|
* 3146Kartik K. Agaram2016-07-241-11/+72
|
* 3145Kartik K. Agaram2016-07-241-4/+48
|
* 3144Kartik K. Agaram2016-07-242-6/+58
| | | | | Fix a bug in phase ordering discovered while trying to stash cells in the lambda compiler.
* 3143Kartik K. Agaram2016-07-241-2/+2
| | | | Fix CI.
* 3142Kartik K. Agaram2016-07-241-24/+43
| | | | | Rewrite ingredients for 'trace' instructions just like 'stash' instructions.
* 3141Kartik K. Agaram2016-07-241-5/+9
| | | | | | | | | Thanks Stephen Malina for helping run into this hole in support for compound types. When I created that assert (commit 2381, Nov 2015) I was thinking only of type ingredients, and didn't realize that compound types could have internal nodes with zero values.