about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* 542Kartik K. Agaram2015-01-122-3/+75
| | | | Tests for terminating when there's just helpers left.
* 541Kartik K. Agaram2015-01-111-3/+3
|
* 540Kartik K. Agaram2015-01-111-1/+1
|
* 539Kartik K. Agaram2015-01-111-6/+3
| | | | Simpler to just always sleep, whether or not a character was received.
* 538 - stdin app now responsiveKartik K. Agaram2015-01-111-1/+6
|
* 537Kartik K. Agaram2015-01-111-5/+0
|
* 536 - introduce a notion of helper routinesKartik K. Agaram2015-01-112-2/+17
| | | | When all you have left to run are helper routines, end the simulation.
* 535 - reading keyboard input from a channelKartik K. Agaram2015-01-112-2/+49
| | | | | | | | The problem is that once main exits it takes two characters at minimum to truly quit: one to fill the buffer and another to overflow it and trigger the deadlock detector. Not the cleanest way to exit in the world either, death by deadlock.
* 534 - this is how we test blocking channelsKartik K. Agaram2015-01-112-4/+27
| | | | Time to write some tests for the chessboard app.
* 533Kartik K. Agaram2015-01-111-1/+3
|
* 532Kartik K. Agaram2015-01-111-4/+6
|
* 531Kartik K. Agaram2015-01-101-1/+1
|
* 530Kartik K. Agaram2015-01-102-1/+4
|
* 529 - 'sleep' can now wait for a routine to completeKartik K. Agaram2015-01-103-3/+35
|
* 528Kartik K. Agaram2015-01-102-6/+7
|
* 527Kartik K. Agaram2015-01-101-3/+3
|
* 526Kartik K. Agaram2015-01-101-2/+0
|
* 525 - 'fork' now returns a routine idKartik K. Agaram2015-01-102-3/+35
|
* 524Kartik K. Agaram2015-01-101-14/+14
|
* 523 - debugging aide: dump just one test a timeKartik K. Agaram2015-01-101-0/+3
|
* 522 - another arg for 'fork'Kartik K. Agaram2015-01-103-8/+27
| | | | Fork syntax is now: fork <function> [global space] [max cycle limit] args*
* 521 - check 'sleep' syntaxKartik K. Agaram2015-01-101-0/+2
|
* 520 - update stale exampleKartik K. Agaram2015-01-101-1/+1
| | | | For new interface to 'sleep' at 511.
* 519 - ooh, use metadata to disambiguate argsKartik K. Agaram2015-01-102-7/+7
|
* 517Kartik K. Agaram2015-01-101-25/+19
| | | | Cleaner trace for 'convert-braces'.
* 516Kartik K. Agaram2015-01-101-20/+6
| | | | Cleanup trace a little.
* 515 - support time limits for threadsKartik K. Agaram2015-01-102-4/+164
| | | | | Disquieting that I can't make each of these five tests fail in isolation. We have to fix them all at once.
* 514Kartik K. Agaram2015-01-092-31/+35
|
* 513Kartik K. Agaram2015-01-091-2/+2
|
* 512 - update html renderingKartik K. Agaram2015-01-093-1361/+3096
|
* 511 - make 'sleep' clearerKartik K. Agaram2015-01-082-30/+32
|
* 510Kartik K. Agaram2015-01-081-2/+2
|
* 509Kartik K. Agaram2015-01-081-23/+23
|
* 508Kartik K. Agaram2015-01-071-1/+8
|
* 507 - time to focus on testing I/OKartik K. Agaram2015-01-061-0/+6
|
* 506 - continue 505Kartik K. Agaram2015-01-061-21/+27
| | | | Still no reason uncovered to avoid non-pointers.
* 505 - simplify tagged-valueKartik K. Agaram2015-01-053-42/+32
| | | | | | | I could swear there was an issue earlier where tagged-values had to contain pointers for some core function. But I can't find it anymore. Ok, assume we can store primitives in it and pointers only for aggregates (and-records and arrays).
* 504 - give up on graphics for nowKartik K. Agaram2015-01-052-325/+20
|
* 503 - start of a solution for drawing piecesKartik K. Agaram2015-01-053-28/+221
| | | | | | | | | | | Dog slow, though. Drawing the sprite for a single piece takes 12s or 30ms/pixel for 400 pixels. A third of that is the actual racket overhead of drawing pixel by pixel, which would in itself be too much. We need bitblts. (Black queen pixels derived from http://www.wpclipart.com/recreation/games/chess/chess_set_1, after scaling down to 40x40 and replacing external white pixels with transparent ones in Gimp.)
* 502 - start of a graphic chessboard appKartik K. Agaram2015-01-043-5/+153
| | | | Just prints an empty board so far.
* 501Kartik K. Agaram2015-01-021-1/+1
|
* 500Kartik K. Agaram2015-01-022-2/+2
|
* 499Kartik K. Agaram2015-01-021-1/+1
|
* 498 - how mu provides closuresKartik K. Agaram2015-01-022-27/+94
|
* 497 - strengthen the concept of 'space'Kartik K. Agaram2015-01-0211-136/+170
| | | | | | | | | | | | | | | | | | | | 'default-scope' is now 'default-space' 'closure-generator' is now 'next-space-generator' The connection to high-level syntax for closures is now tenuous, so we'll call the 'outer scope' the 'next space'. So, let's try to create a few sentences with all these related ideas: Names map to addresses offset from a default-space when it's provided. Spaces can be strung together. The zeroth variable points to the next space, the one that is accessed when a variable has /space:1. To map a name to an address in the next space, you need to know what function generated that space. A corollary is that the space passed in to a function should always be generated by a single function. Spaces can be used to construct lexical scopes and objects.
* 496Kartik K. Agaram2015-01-021-0/+9
|
* 495Kartik K. Agaram2015-01-022-1/+5
|
* 494 - yet another regressionKartik K. Agaram2015-01-021-1/+13
|
* 493Kartik K. Agaram2015-01-021-0/+2
|
* 492 - make chessboard more self-containedKartik K. Agaram2015-01-022-10/+16
|