about summary refs log tree commit diff stats
path: root/056recipe_header.cc
Commit message (Collapse)AuthorAgeFilesLines
* 2778 - fix all layersKartik K. Agaram2016-03-141-508/+0
|
* 2773 - switch to 'int'Kartik K. Agaram2016-03-131-17/+17
| | | | This should eradicate the issue of 2771.
* 2735 - define recipes using 'def'Kartik K. Agaram2016-03-081-52/+54
| | | | | | | | | | | | 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-7/+7
|
* 2711 - permit boolean<-number conversionsKartik K. Agaram2016-02-251-3/+3
| | | | | | | | | | | I might change my mind on this, but it's worth a try after watching Ella run up against it today. I got her to build the recipe 'odd?', but then it failed to run because she couldn't convert a numeric remainder to a number without a conditional (which I haven't taught her yet). For now I don't change the value in the boolean, so booleans can store arbitrary bit patterns like in C. We just say that 0 is false and anything else is true. I *think* that doesn't break the type system..
* 2704 - eradicate all mention of warnings from coreKartik K. Agaram2016-02-251-2/+2
|
* 2703Kartik K. Agaram2016-02-251-6/+6
|
* 2701 - turn some warnings into errorsKartik K. Agaram2016-02-251-6/+6
| | | | | | | I really have only one warning left: when somebody redefines a function. I think I'm going to just turn that into an error as well and drop the notion of warnings altogether. Anytime we find something wrong we stop running the program. This is a place where hygiene is justified.
* 2681 - drop reagent types from reagent propertiesKartik K. Agaram2016-02-211-12/+4
| | | | | | | | | | | | | | | | | All my attempts at staging this change failed with this humongous commit that took all day and involved debugging three monstrous bugs. Two of the bugs had to do with forgetting to check the type name in the implementation of shape-shifting recipes. Bug #2 in particular would cause core tests in layer 59 to fail -- only when I loaded up edit/! It got me to just hack directly on mu.cc until I figured out the cause (snapshot saved in mu.cc.modified). The problem turned out to be that I accidentally saved a type ingredient in the Type table during specialization. Now I know that that can be very bad. I've checked the traces for any stray type numbers (rather than names). I also found what might be a bug from last November (labeled TODO), but we'll verify after this commit.
* 2671 - never use debug_string() in tracesKartik K. Agaram2016-02-191-5/+5
| | | | It's only for transient debugging.
* 2685Kartik K. Agaram2016-02-191-7/+7
| | | | | | | | | | | | | | | | 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.
* 2661 - warn if a reply doesn't match recipe headerKartik K. Agaram2016-02-151-4/+17
| | | | | | | | Thanks Nicolas Léveillé for running up against this bug: https://news.ycombinator.com/item?id=11094837 (Also noticed and fixed several subsidiary issues. This whole aspect doesn't seem fully baked yet.)
* 2643Kartik K. Agaram2016-02-101-2/+2
|
* 2619 - actually allow coercing booleans to numbersKartik K. Agaram2016-01-301-1/+3
| | | | | This uncovered a bug where I've been forgetting the directionality of arguments to types_coercible().
* 2606 - fix crashKartik K. Agaram2016-01-271-1/+1
| | | | Thanks Caleb Couch.
* 2596 - experiment: no unique addresses in callsKartik K. Agaram2016-01-231-0/+38
| | | | | | | | | | Reading http://www.jonathanturner.org/2016/01/rust-and-blub-paradox.html, I realize there's nothing currently stopping mu programs from taking a unique (non-shared) address into a shared allocation, abandoning the allocation and being left with an invalid address. No fix for this yet, but let's try to minimize its effect by limiting lifetimes of unique addresses. We really should only be using them to write to array or container elements.
* 2564Kartik K. Agaram2016-01-181-6/+6
|
* 2562Kartik K. Agaram2016-01-171-6/+2
| | | | | | | | | | | | We want to use the type 'recipe' for recipe *variables*, because it seems nicer to say `recipe number -> number` rather than recipe-ordinal, etc. To support this we'll allow recipe names to be mentioned without any type. This might make a couple of places in this commit more brittle. I'm dropping error messages, causing them to not happen in some situations. Maybe I should just bite the bullet and require an explicit :recipe-literal. We'll see.
* 2559 - stop using 'next-ingredient' explicitlyKartik K. Agaram2016-01-121-2/+4
| | | | | I still need it in some situations because I have no way to set a non-zero default for an optional ingredient. Open question..
* 2557 - type-check most ingredients ahead of timeKartik K. Agaram2016-01-121-2/+83
|
* 2556Kartik K. Agaram2016-01-121-1/+2
|
* 2550Kartik K. Agaram2015-12-281-0/+1
|
* 2616Kartik K. Agaram2015-12-021-0/+11
| | | | | Can't find a test case where it's reading comments it shouldn't be, so far..
* 2615Kartik K. Agaram2015-12-021-13/+2
| | | | | | We don't actually need skip_whitespace_AND_comments_BUT_NOT_newline anywhere except next_word(). Perhaps what I should really do is split the definition of next_word() into two variants..
* 2614 - still fixing bugs with missing '['Kartik K. Agaram2015-12-021-3/+24
| | | | | | When skipping past some text (usually whitespace, but also commas and comments) I need to always be aware of whether it's ok to switch to the next line or not.
* 2613 - stop dying on missing bracketKartik K. Agaram2015-12-021-2/+8
| | | | Thanks Caleb Couch.
* 2502Kartik K. Agaram2015-11-281-2/+2
|
* 2501Kartik K. Agaram2015-11-281-1/+1
|
* 2499 - done reorganizing transformsKartik K. Agaram2015-11-281-1/+1
|
* 2497Kartik K. Agaram2015-11-281-3/+3
|
* 2495Kartik K. Agaram2015-11-281-1/+1
|
* 2473 - bad idea to use /raw with multiple intentionsKartik K. Agaram2015-11-221-1/+1
| | | | | /raw is to express absolute addresses /unsafe is to sidestep type-checking in test setup
* 2460 - headers for remaining recipesKartik K. Agaram2015-11-181-3/+1
|
* 2419Kartik K. Agaram2015-11-101-48/+48
|
* 2417 - support mutable ingredients in headersKartik K. Agaram2015-11-101-31/+74
| | | | | | If a name repeats between ingredients, we raise an error. If a name repeats across ingredients and products, every call should share the same name across the corresponding ingredients and products.
* 2413 - another backfilled test for 2391Kartik K. Agaram2015-11-091-0/+8
| | | | This time for the support for 'new' that was added in 2393.
* 2407 - bugfix: parsing recipe headersKartik K. Agaram2015-11-091-2/+26
|
* 2406Kartik K. Agaram2015-11-081-4/+2
| | | | | One new issue: the traces for all tests are perturbed by the .mu files we choose to load.
* 2404 - ah, finally a useful assertionKartik K. Agaram2015-11-081-7/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | And it caught a bug: I mean to always update type names and types in sync. The last month or so I've been getting reluctantly but inexorably converted to the need and value of a type system. First I thought I just need a minimal but rigorous type system to avoid memory corruption and security issues. Now I think I also want it to be expressive enough to be able to express what data different phases in a compiler read and write, and to be able to designate specific fields as 'fully computed' so that we can statically check that phases wait until their data is available. The phase-ordering problem in a compiler is perhaps the canary in the coal-mine for a more general problem: even small changes can dramatically explode the state space if they violate assumptions previously held about the domain. My understanding of when type pointers are null and not null is immeasurably more nuanced today than it was a week ago, but I didn't need the nuance until I introduced generic functions. That initial draft of a hundred lines bumped me up to a much larger state space. How to make it more obvious when something happens that is akin to discovering a new continent, or finding oneself teleported to Jupiter? Assumptions can be implicit or explicit. Perhaps a delete of an assertion should be estimated at 1000 LoC of complexity?
* 2400 - eliminate last few warningsKartik K. Agaram2015-11-081-4/+7
|
* 2399 - consistent debug_string vocabularyKartik K. Agaram2015-11-081-2/+2
|
* 2383 - new concern: idempotence of transformsKartik K. Agaram2015-11-061-2/+2
| | | | | I'd not paid any attention to it so far, but I need to do so from now on.
* 2382Kartik K. Agaram2015-11-061-0/+2
| | | | Starting to leave commented out prints again out of desperation.
* 2377 - stop using operator[] in mapKartik K. Agaram2015-11-061-10/+10
| | | | | | | | | | | | | | | | 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.
* 2370 - layers 1-4 of edit are backKartik K. Agaram2015-11-051-4/+13
| | | | | | | | | | | | One nice consequence of all my deduction of reply ingredients is that I can insert the same fragment into recipes with different headers, and everything works as long as reply instructions are implicitly deduced. One thing I had to fix to make this work was to move reply-deduction out of rewrite rules and turn it into a first-class transform, so that it happens after tangling. I'm glad to see the back of that hack inside <scroll-down>.
* 2360Kartik K. Agaram2015-11-041-4/+4
| | | | | | | | | More flailing around trying to come up with the right phase ordering. I've tried to narrow down each transform's constraints wrt transforms in previous layers. One issue that keeps biting me is the Type map containing empty records because of stray [] operations. That's gotta be important.
* 2358 - starting to tackle the phase ordering problemKartik K. Agaram2015-11-041-5/+5
| | | | | | | A new externality is starting to make its presence felt. Until I sort this out it's going to be hard to finish making duplex-list generic.
* 2355Kartik K. Agaram2015-11-041-0/+14
|
* 2336Kartik K. Agaram2015-10-311-2/+3
| | | | Minor tweak: track all recipe variants.
* 2335Kartik K. Agaram2015-10-311-1/+1
|