about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 3707Kartik K. Agaram2016-12-1227-55/+81
| | | | | | | | | | | | | | | | | | Be more disciplined about tagging 2 different concepts in the codebase: a) Use the phrase "later layers" to highlight places where a layer doesn't have the simplest possible self-contained implementation. b) Use the word "hook" to point out functions that exist purely to provide waypoints for extension by future layers. Since both these only make sense in the pre-tangled representation of the codebase, using '//:' and '#:' comments to get them stripped out of tangled output. (Though '#:' comments still make it to tangled output at the moment. Let's see if we use it enough to be worth supporting. Scenarios are pretty unreadable in tangled output anyway.)
* 3706Kartik K. Agaram2016-12-113-6/+6
|
* 3705 - switch to tested file-system primitivesKartik K. Agaram2016-12-1135-1504/+1598
|
* 3704Kartik K. Agaram2016-12-114-10/+56
| | | | | | | Bugfix: writing to a new file in a non-empty fake file system. The one time I try to get a little clever, it bites me in the ass. That'll teach me..
* 3703Kartik K. Agaram2016-12-066-50/+59
|
* 3702Kartik K. Agaram2016-12-061-1/+1
| | | | Commands like '$exit' shouldn't look like labels.
* 3701Kartik K. Agaram2016-11-293-1/+10
| | | | Gracefully handle yet another typo.
* 3700Kartik K. Agaram2016-11-2812-315/+193
| | | | | | Reorder products of some functions in the edit/ and sandbox/ apps. My recent realization: always return 'real' products before ones that just indicate an ingredient is mutable.
* 3699Kartik K. Agaram2016-11-2814-41/+32
| | | | | Delete some obsolete /same-as-ingredient attributes. We should always let Mu deduce those at this point.
* 3698Kartik K. Agaram2016-11-276-142/+148
| | | | | | | | Update sandbox/ with recent changes to edit/ (commit 3695 onwards). [Incidentally, this is the first commit to be made while running on OpenBSD. Simulated and host systems are going to blur together from now on.]
* 3697Kartik K. Agaram2016-11-272-26/+4
| | | | | | Decouple programming environment initialization from rendering. This helps make clear that we only need the width from screen during initialization.
* 3696Kartik K. Agaram2016-11-2712-336/+386
| | | | | | Decouple editor initialization from rendering to screen. This hugely simplifies the header of 'new-editor' and makes clear that it was only using the screen for rendering.
* 3695Kartik K. Agaram2016-11-272-20/+20
|
* 3694Kartik K. Agaram2016-11-264-76/+89
| | | | Fix CI, broken by commit 3691.
* 3693Kartik K. Agaram2016-11-252-2/+10
|
* 3692Kartik K. Agaram2016-11-252-2/+2
| | | | | | If we're automatically passing ingredients to 'append' through 'to-text' if its first ingredient is text, we don't need to pass that first ingredient itself through 'to-text'.
* 3691Kartik K. Agaram2016-11-254-8/+6
| | | | Expand 'assert' to handle non-literal texts.
* 3690Kartik K. Agaram2016-11-252-0/+2
| | | | | Attempting to write to a file in a non-existent directory silently writes to a black hole in Unix. Make that explicit.
* 3689Kartik K. Agaram2016-11-254-12/+8
|
* 3688Kartik K. Agaram2016-11-2512-10/+40
| | | | | | | Move my todos over the past couple of years into the codebase now that it might be going dormant. Surprising how few todos left undone!
* 3687Kartik K. Agaram2016-11-253-9/+8
|
* 3686Kartik K. Agaram2016-11-252-8/+8
|
* 3685Kartik K. Agaram2016-11-232-2/+0
|
* 3684Kartik K. Agaram2016-11-232-14/+16
| | | | | | | | | | | | | Trying to find examples where a layer includes complexity just so later layers can hook into it. Resolve_stack is the one big one I've found that isn't just a simple function-call indirection that may later get more complex. Conclusion of a conversation with Stephen Malina: Such examples should make one very nervous, because this sort of creep is how we end up with over-engineered abstractions (http://www.joelonsoftware.com/articles/fog0000000018.html). We need to step very carefully anytime we make the outsider reader's comprehension task harder..
* 3683Kartik K. Agaram2016-11-232-0/+52
|
* 3682Kartik K. Agaram2016-11-224-14/+18
| | | | | Clean up the flow of "mu --trace" followed by "mu browse-trace interactive".
* 3681Kartik K. Agaram2016-11-224-42/+44
| | | | Couple of fixes to example programs.
* 3680Kartik K. Agaram2016-11-171-16/+13
| | | | | Was there some reason I used a subshell? No reason recorded at bottom.
* 3679Kartik K. Agaram2016-11-177-17/+62
|
* 3678 - complain about string labelsKartik K. Agaram2016-11-152-1/+10
| | | | Thanks Jack Couch for running into this.
* 3677 - gracefully handle parse errors in scenariosKartik K. Agaram2016-11-151-3/+26
| | | | Thanks Jack Couch for running into this.
* 3676 - stop scenarios on error in transformKartik K. Agaram2016-11-151-1/+10
| | | | Thanks Jack Couch for running into this.
* 3675Kartik K. Agaram2016-11-155-12/+16
|
* 3674Kartik K. Agaram2016-11-132-2/+2
|
* 3673Kartik K. Agaram2016-11-135-15/+127
|
* 3672Kartik K. Agaram2016-11-131-3/+3
|
* 3671 - support text in '$print'Kartik K. Agaram2016-11-122-0/+6
|
* 3670 - parsing whole numbers from textKartik K. Agaram2016-11-111-0/+83
| | | | Thanks Ella Couch for contributing this function.
* 3669Kartik K. Agaram2016-11-113-7/+7
|
* 3668 - $read a word, stopping at whitespaceKartik K. Agaram2016-11-112-8/+30
| | | | | | | | | | | | Useful for programming contests like https://halite.io Doesn't suffer from C++'s usual buffered gotchas: it'll skip leading whitespace. Slow, though. Can be speeded up, though. - 20 minutes later But what's the point? Typewriter mode is actually harder to test than 'raw' console mode. Writing Mu programs in typewriter mode is just going to encourage us all to slack off on writing tests.
* 3667Kartik K. Agaram2016-11-1142-444/+745
|
* 3666Kartik K. Agaram2016-11-111-0/+2
| | | | Fix a memory leak.
* 3665Kartik K. Agaram2016-11-111-22/+22
|
* 3664Kartik K. Agaram2016-11-101-1/+0
|
* 3663 - fix a refcounting bug: '(type)' != 'type'Kartik K. Agaram2016-11-1016-65/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was a large commit, and most of it is a follow-up to commit 3309, undoing what is probably the final ill-considered optimization I added to s-expressions in Mu: I was always representing (a b c) as (a b . c), etc. That is now gone. Why did I need to take it out? The key problem was the error silently ignored in layer 30. That was causing size_of("(type)") to silently return garbage rather than loudly complain (assuming 'type' was a simple type). But to take it out I had to modify types_strictly_match (layer 21) to actually strictly match and not just do a prefix match. In the process of removing the prefix match, I had to make extracting recipe types from recipe headers more robust. So far it only matched the first element of each ingredient's type; these matched: (recipe address:number -> address:number) (recipe address -> address) I didn't notice because the dotted notation optimization was actually representing this as: (recipe address:number -> address number) --- One final little thing in this commit: I added an alias for 'assert' called 'assert_for_now', to indicate that I'm not sure something's really an invariant, that it might be triggered by (invalid) user programs, and so require more thought on error handling down the road. But this may well be an ill-posed distinction. It may be overwhelmingly uneconomic to continually distinguish between model invariants and error states for input. I'm starting to grow sympathetic to Google Analytics's recent approach of just banning assertions altogether. We'll see..
* 3662Kartik K. Agaram2016-11-101-2/+2
|
* 3661Kartik K. Agaram2016-11-101-22/+24
| | | | Another place I missed in commit 3309.
* 3660Kartik K. Agaram2016-11-101-8/+11
| | | | | Fix a place I forgot to update in commit 3309, moving to the new type_tree representation.
* 3659Kartik K. Agaram2016-11-101-1/+1
|
* 3658Kartik K. Agaram2016-11-101-23/+23
|