Kartik Agaram
4b41663394
7189 - some validations on function name
...
Mu has no overloading or static dispatch for now.
2020-11-05 20:10:46 -08:00
Kartik Agaram
7a25625c43
7188 - raise error on deref of var on stack
2020-11-05 19:08:44 -08:00
Kartik Agaram
c31d1d3a3d
7185 - type checks for 'populate-stream'
...
Lots of copy-pasta.
2020-11-05 16:35:47 -08:00
Kartik Agaram
2ea3107c21
7184 - type checks for 'populate'
2020-11-05 16:27:46 -08:00
Kartik Agaram
6017f1e240
7183 - type checks for 'allocate'
2020-11-05 15:06:25 -08:00
Kartik Agaram
9b91efeadd
7182 - type checks for 'copy-object'
2020-11-05 01:20:23 -08:00
Kartik Agaram
686b87cc06
7181 - type checks for 'address' instruction
2020-11-05 00:51:15 -08:00
Kartik Agaram
cc356b35bf
7180
...
More bugfixes, now all apps are working.
In the process of fixing the bugs in translating apps/browse, I found a
typo in apps/tile that just happened to accidentally be compiling fine.
2020-11-04 22:58:13 -08:00
Kartik Agaram
8767e709c5
7179
...
After this bugfix, apps/tile/ is now working.
apps/browse/ is still failing.
2020-11-04 22:38:39 -08:00
Kartik Agaram
940dad03c2
7178 - type checks for 'compare' instruction
2020-11-04 20:34:43 -08:00
Kartik Agaram
179d26ae8e
7177 - type checks for 'copy-to' instruction
2020-11-04 19:04:43 -08:00
Kartik Agaram
0102aa377a
7176 - type checks for 'copy' instruction
2020-11-04 19:04:15 -08:00
Kartik Agaram
768aeffbbe
7174 - function returns should now be safe
2020-11-03 22:32:50 -08:00
Kartik Agaram
bd57b37fc5
7173
...
All tests passing again.
2020-11-03 21:31:48 -08:00
Kartik Agaram
da2dc3ee9d
7172
2020-11-03 20:37:26 -08:00
Kartik Agaram
c623ff2975
7171
2020-11-03 20:23:39 -08:00
Kartik Agaram
71d21ae662
7170
...
One more test.
2020-11-03 20:13:41 -08:00
Kartik Agaram
aa36ee1cdf
7169
...
Now test-return-unavailable-value is passing,
but test-convert-return-with-duplicate-values is failing.
Time to think.
2020-11-03 20:13:02 -08:00
Kartik Agaram
ec638f029d
7168 - snapshot
...
2 new tests:
test-return-unavailable-value - currently failing
test-convert-return-with-duplicate-values - currently passing
I don't yet know how to make both pass.
2020-11-03 19:15:32 -08:00
Kartik Agaram
f7cd97c197
7167
2020-11-03 18:10:32 -08:00
Kartik Agaram
f21c96203e
7166
2020-11-03 15:42:58 -08:00
Kartik Agaram
da791479a0
7165
...
All tasks of https://github.com/akkartik/mu/issues/45#issuecomment-719990879
should now be complete.
2020-11-03 14:04:35 -08:00
Kartik Agaram
85a29a4e4e
7164
2020-11-03 13:37:32 -08:00
Kartik Agaram
65dcc74693
7163 - first type checks for 'return' statements
2020-11-03 13:29:09 -08:00
Kartik Agaram
571ad49190
7161 - stop processing function outputs
...
Assignments to them will no longer work, and they can never be live variables.
https://github.com/akkartik/mu/issues/45#issuecomment-719990879 , task 3.
2020-11-02 21:03:03 -08:00
Kartik Agaram
95d89d1cc0
7160
2020-11-02 20:36:42 -08:00
Kartik Agaram
a3f7791586
7159 - explicitly use 'return' everywhere
...
https://github.com/akkartik/mu/issues/45#issuecomment-719990879 , task 2.
2020-11-02 19:50:52 -08:00
Kartik Agaram
c8e41a470f
7157
2020-11-01 22:17:40 -08:00
Kartik Agaram
34063288c9
7156
2020-11-01 22:07:40 -08:00
Kartik Agaram
10adec2f21
7155
...
apps/arith.mu compiling again.
2020-11-01 22:04:35 -08:00
Kartik Agaram
17623a628a
7154
2020-11-01 22:02:13 -08:00
Kartik Agaram
cc7dcdc3b8
7153
...
Bugfix in computing the label a return should jump to.
2020-11-01 20:37:56 -08:00
Kartik Agaram
ccadc6e604
7152 - 'return' instruction
...
https://github.com/akkartik/mu/issues/45#issuecomment-719990879 , task 1.
We don't have checking for it yet. Soon.
2020-11-01 18:02:02 -08:00
Kartik Agaram
c694b8e2cb
7151
...
Drop pending tests for the old plan of liveness analysis.
2020-11-01 11:19:03 -08:00
Kartik Agaram
77687ba944
7148
2020-10-31 20:29:09 -07:00
Kartik Agaram
8c44afcccc
7145 - roll back to 7143
2020-10-30 20:23:56 -07:00
Kartik Agaram
264acd9ec9
7144 - tmp: redo checks for function outputs
...
This isn't done, but an intermediate snapshot seems worth capturing.
Back in March (commit 6082), I made a plan to check writes to function
outputs using liveness analysis. I've been shying away from actually acting
on this plan ever since. In recent weeks I've had this gap bite me three
times.
Returning to the problem now, I think I don't actually need to compute
variable liveness. The compiler can, I think, do the same thing for output
registers whether their variables are alive or dead. The new rule is this:
Once a register gets a function output written to it, no local is popped
into it. Instead of popping outer locals to the register, we simply increment
the stack and keep going.
Since the function output will continue to live on the vars stack past
this point (see clean-up-block), any attempts to read shadowed variables
will throw an error as usual.
This rule is also now easy to explain to people, I think. "You wrote the
function output. Now the register can't be used for anything else."
It's really cool that this works (if it does). Another fruit from "Mu's
lovely property."
2020-10-30 06:05:52 -07:00
Kartik Agaram
8fe51755bf
7143
...
Am I starting to have too much code duplication?
2020-10-29 22:06:50 -07:00
Kartik Agaram
2486881de0
7142
2020-10-29 21:36:33 -07:00
Kartik Agaram
0a5d247ba7
7141
2020-10-29 21:15:15 -07:00
Kartik Agaram
bc67d01879
7140
2020-10-29 13:19:53 -07:00
Kartik Agaram
7521fcdc1e
7139 - type-check compute-offset
2020-10-29 00:34:00 -07:00
Kartik Agaram
4cbe0ba1ac
7138 - type-check array 'length' instruction
2020-10-29 00:03:19 -07:00
Kartik Agaram
d3657eec0d
7137
2020-10-28 23:25:40 -07:00
Kartik Agaram
216af9cc1c
7136
2020-10-28 23:25:05 -07:00
Kartik Agaram
33b1e9a894
7135 - type-check write-to-stream
...
Lots of copy-pasta.
2020-10-28 22:39:14 -07:00
Kartik Agaram
d648812c51
7134 - type-check read-from-stream
2020-10-28 22:35:35 -07:00
Kartik Agaram
6b218b8d62
7130 - back to the Mu compiler for a spell
...
Hacking on apps has created some urgency now for several additional safety
checks.
2020-10-27 21:22:18 -07:00
Kartik Agaram
c5e1cbc4ce
7129 - tile: allow bindings anywhere
...
Amazing how easy this was. And it does feel more intuitive. If I decide
at some point that I want to bind something to a name I don't usually want
to lose the entire line after that point.
It also sidesteps for now the thorny question of whether to permit organically
switching to a new line (rather than using the 'name value' hotkey), and
how that should work.
2020-10-27 20:51:28 -07:00
Kartik Agaram
603b4c47dd
7128
...
More consistent spacing in sandbox render.
2020-10-27 10:31:21 -07:00
Kartik Agaram
5df70f4dff
7127
2020-10-27 00:49:02 -07:00
Kartik Agaram
f926aaedfc
7126
2020-10-27 00:44:36 -07:00
Kartik Agaram
61dca1cec4
7125 - tile: fade out values on the stack
2020-10-27 00:43:50 -07:00
Kartik Agaram
332998546d
7124 - tiles: better 'lines' primitive
2020-10-27 00:43:14 -07:00
Kartik Agaram
307a75530f
7123 - tile: truncate string if necessary
2020-10-26 23:57:39 -07:00
Kartik Agaram
c15b6e3fc6
7122 - tile: styling for strings
2020-10-26 23:45:40 -07:00
Kartik Agaram
22ade886d5
7121
...
Starting to polish 'line-count' demo:
filename line-count
= filename open lines len
2020-10-26 23:45:40 -07:00
Kartik Agaram
0f9a65dc0d
7120 - tile: array of lines from file
...
Requires a quick hacky change to Mu compiler.
2020-10-26 23:45:40 -07:00
Kartik Agaram
f3d1929033
7119 - tile: new primitive to slurp file contents
...
Stack display is messed up when file contents contain newlines. Ignoring
that for now.
2020-10-26 21:56:47 -07:00
Kartik Agaram
2ddfdf191c
7118
2020-10-26 21:54:31 -07:00
Kartik Agaram
8bbd494aaa
7117
2020-10-26 21:53:02 -07:00
Kartik Agaram
d5ac55d3ca
7116 - tile: regression in typing in strings
...
We really need to clean up the Mu compiler's logic around function outputs.
2020-10-26 21:50:37 -07:00
Kartik Agaram
71418907f6
7115
2020-10-26 21:24:43 -07:00
Kartik Agaram
c5b1b560e2
7113
2020-10-26 21:06:26 -07:00
Kartik Agaram
14a41f4a27
7112 - tile: arrays of non-integers
2020-10-26 21:01:42 -07:00
Kartik Agaram
16a31669e3
7111
2020-10-26 17:06:00 -07:00
Kartik Agaram
7c9b650d27
7110
...
Some more helpers that I want to avoid using, but they help me gain confidence
in the current implementation of file handles. Manual test:
"x" open dup read swap read
Assumes there's a file called `x` in the current directory that contains
at least two (short!) lines.
2020-10-26 09:27:32 -07:00
Kartik Agaram
475da72c61
7109
...
Turns out I've been including some unnecessary files when building apps/mu!
Treeshaken stats before:
LoC 26258 => 9717
LoC including common libraries: 29736 => 12719
binary size: 406K => 79K
After:
LoC 26258 => 9717
LoC including common libraries: 28322 => 12370
binary size: 406K => 77K
So our treeshaking isn't perfect. No surprise there..
The treeshaken build also starts to fail without the one-liner change to
mu.subx, which looks like a bug in the treeshaker.
2020-10-25 22:32:56 -07:00
Kartik Agaram
10d5b13af8
7108 - tile: read from file handle
2020-10-25 21:43:18 -07:00
Kartik Agaram
5f5579e168
7107 - tile: file handles
2020-10-25 21:35:24 -07:00
Kartik Agaram
2d7960d493
7106 - tile: arrays of ints
2020-10-25 21:15:43 -07:00
Kartik Agaram
1787560a6d
7105 - tile: define-function works with strings
2020-10-25 20:33:40 -07:00
Kartik Agaram
fa4cc8c871
7104 - tile: word-rename works with strings
2020-10-25 20:12:32 -07:00
Kartik Agaram
bdf1bf7777
7103 - tile: first primitive for strings
2020-10-25 20:00:36 -07:00
Kartik Agaram
ad54c69667
7102
2020-10-25 19:41:07 -07:00
Kartik Agaram
a148b23a22
7101 - tile: remove quotes when evaluating strings
...
This found several bugs due to me not checking for null strings.
2020-10-25 18:45:11 -07:00
Kartik Agaram
8a6ad45d8d
7100 - tile: render string literals
2020-10-25 18:14:12 -07:00
Kartik Agaram
517ef9f64f
7099
2020-10-25 15:23:49 -07:00
Kartik Agaram
f37e7f33e8
7098 - tile: string values
...
Strings can contain spaces.
2020-10-25 14:34:40 -07:00
Kartik Agaram
a87bc353f5
.
2020-10-24 19:33:41 -07:00
Kartik Agaram
e648bc9c88
tile: process space in middle of word
2020-10-24 18:26:19 -07:00
Kartik Agaram
1137dd2a99
tile: process space at start of word
...
This was very difficult to debug.
We still need to process space in the middle of a word.
2020-10-24 16:52:33 -07:00
Kartik Agaram
03012c91c2
tile: adjust spacing between commandline and stack
2020-10-23 00:09:24 -07:00
Kartik Agaram
4568607634
7087 - defining functions now seems to be working
2020-10-20 22:15:32 -07:00
Kartik Agaram
6b973819d0
7086
...
Expanding words now seems to be working. I was forgetting to update 'prev'
pointers in a few places.
2020-10-20 21:48:53 -07:00
Kartik Agaram
9ac5159486
7085
2020-10-20 21:18:38 -07:00
Kartik Agaram
cbe90c6a2b
7084
...
Cursor now updating right.
Still a couple of bugs:
ctrl-e doesn't know about multiple lines
function calls don't expand right in multi-line sandboxes
(but at least I'm now getting to see them in action!)
2020-10-20 13:39:31 -07:00
Kartik Agaram
38ff550455
7083
...
Defining functions mostly working. But we still need to fix the cursor
afterwards.
2020-10-20 10:02:31 -07:00
Kartik Agaram
ce94374bd1
7082
2020-10-20 09:39:12 -07:00
Kartik Agaram
5bdcb85f67
7081
...
Defining new functions seems to be working. _However_, we aren't yet detecting
duplicates. `x x *` leads to a declaration of `x x f`.
2020-10-20 09:33:13 -07:00
Kartik Agaram
c2d537c46b
7080
...
Constructing new functions with ctrl-d is now working right. But the call
seems exactly flipped.
2020-10-20 01:07:21 -07:00
Kartik Agaram
0cdbfff256
7079
2020-10-19 23:53:45 -07:00
Kartik Agaram
e28b949f18
7078
2020-10-19 23:20:33 -07:00
Kartik Agaram
5e9a482193
7077 - tile: render function list
2020-10-19 23:13:28 -07:00
Kartik Agaram
5532ea013b
7066 - tile: some more primitives for testing
...
Lesson learned: functions store args in _reverse_ order. Since evaluation
is very frequent, it's worth optimizing for it.
2020-10-19 22:41:46 -07:00
Kartik Agaram
3ff287f410
7065
2020-10-19 22:29:08 -07:00
Kartik Agaram
7144ae7638
7064
2020-10-19 22:27:52 -07:00
Kartik Agaram
1158758f20
7063 - tile: scaffolding for defining functions
2020-10-18 23:41:57 -07:00
Kartik Agaram
f1a3f88e95
7062
2020-10-18 23:23:36 -07:00
Kartik Agaram
266ac87340
7061
2020-10-18 23:22:06 -07:00
Kartik Agaram
19fd3c9ca4
7060 - tile: renaming variables now works
2020-10-18 23:07:23 -07:00
Kartik Agaram
956394017e
7059
...
Cursor now in the right place after rename. But stack still doesn't show
the value of a name.
2020-10-18 22:48:11 -07:00
Kartik Agaram
a3ddc1bdb3
7058
...
Snapshot; things seem to be working besides ctrl-r, but we aren't yet rendering
only the final line.
2020-10-18 21:57:09 -07:00
Kartik Agaram
47497ea552
7057 - tile: back to names
...
We can now create new bindings for names while evaluating lines.
2020-10-18 20:51:47 -07:00
Kartik Agaram
82d1fe7c9c
7056 - orange-pink
2020-10-18 20:18:51 -07:00
Kartik Agaram
d7d384a72b
7055
2020-10-18 15:49:20 -07:00
Kartik Agaram
e170b35d8b
7054
2020-10-18 15:39:34 -07:00
Kartik Agaram
dc0e03e4a5
7053
...
Rename seems to now be working. State still isn't rendered right, so we
can't be sure.
2020-10-17 23:29:02 -07:00
Kartik Agaram
1fc218bf9d
7052
2020-10-17 23:10:00 -07:00
Kartik Agaram
26bfae3d5e
7051
2020-10-17 13:54:33 -07:00
Kartik Agaram
d29dcd1263
7050
2020-10-17 12:32:44 -07:00
Kartik Agaram
ab697ede40
7049
2020-10-17 11:50:43 -07:00
Kartik Agaram
e3d6e067c6
7048
2020-10-17 11:48:13 -07:00
Kartik Agaram
302082ab70
7047
2020-10-17 11:45:37 -07:00
Kartik Agaram
5f8c473c55
7046 - start of flow for naming words
...
Names don't stick yet, but we have a scaffolding for printing a dialog
and accepting input.
2020-10-17 11:40:29 -07:00
Kartik Agaram
2dd300eb20
7045
2020-10-16 22:46:39 -07:00
Kartik Agaram
b72c5a60ff
7044
2020-10-16 22:40:40 -07:00
Kartik Agaram
7244bf99dd
7043 - the REPL is dead; long live the IVL
2020-10-16 22:29:23 -07:00
Kartik Agaram
16212c63cb
7042
2020-10-15 22:37:21 -07:00
Kartik Agaram
fc1d71dd09
7039
...
Ok, I think we may finally be done crushing all the pesky bugs.
And now we can insert and delete words in the middle of a line, and have
expanded calls stay stable!
2020-10-15 21:22:51 -07:00
Kartik Agaram
02cefc7065
7038
...
Arrow keys now seem to be working right within expanded functions. Still
seeing one minor issue with left-arrow skipping words.
2020-10-15 21:19:52 -07:00
Kartik Agaram
2885e1d441
7037
...
Expanding words now working, but ctrl-f/ctrl-b inside expanded words not
working right.
2020-10-15 20:54:06 -07:00
Kartik Agaram
514dea3aab
7036
...
ctrl-u now working.
2020-10-15 20:48:27 -07:00
Kartik Agaram
70da3b3846
7035
...
ctrl-f and ctrl-b working right. Now ctrl-u is segfaulting. Also expanding
words.
2020-10-15 20:46:01 -07:00
Kartik Agaram
6fdfd5607b
7034
...
Finally following up on commit 7020. Ctrl-a and ctrl-e now work, but word-wise
motions are still showing some funkiness.
2020-10-15 20:37:11 -07:00
Kartik Agaram
480fd9958a
7032
2020-10-14 13:42:03 -07:00
Kartik Agaram
d9f8784d4c
7031
2020-10-14 12:46:53 -07:00
Kartik Agaram
7dd5a41e07
7030
2020-10-14 12:22:32 -07:00
Kartik Agaram
9635163bdc
7029
2020-10-14 12:00:19 -07:00
Kartik Agaram
098dd58df4
7021
2020-10-14 03:51:50 -07:00
Kartik Agaram
5fe86b8348
7020
...
snapshot: migrating call-path to store word handles rather than word indexes.
ctrl-a and ctrl-e are segfaulting. There are likely other problems.
The major new change here is that allocating a call-path-element no longer
initializes it.
2020-10-14 03:31:06 -07:00
Kartik Agaram
3b18846e1f
7019
2020-10-14 02:52:30 -07:00
Kartik Agaram
c3edaff02a
7018 - tile: tweak spacing between stacks
...
Until now the word being typed had a slightly larger invisible margin,
which was a little strange. Should look cleaner now.
2020-10-13 10:58:18 -07:00
Kartik Agaram
f3a8a2588f
7017
2020-10-13 10:29:42 -07:00
Kartik Agaram
6310b0c44d
7016 - raw addrs shouldn't escape functions
...
We don't have the static checks for this yet, but discovering I've not
been following my own rules bumps the priority on it.
2020-10-13 10:15:23 -07:00
Kartik Agaram
af52cb8d1f
7015 - bugfix in column width computation
...
I just got bitten by variable shadowing! It's a lot less theoretical concern
now.
2020-10-13 00:05:05 -07:00
Kartik Agaram
54fd7d7a99
7014
...
7013 had broken right-justification when rendering the stack. Redo.
2020-10-12 21:25:41 -07:00
Kartik Agaram
1faea03428
7013
2020-10-12 19:00:16 -07:00
Kartik Agaram
32cc6779af
7012
...
Fix CI.
2020-10-12 12:08:25 -07:00
Kartik Agaram
6c21568f03
7011 - tile: keep garbage out of the stack
2020-10-12 11:39:28 -07:00
Kartik Agaram
598f942624
7010
...
A new example that better demonstrates the value of named arguments.
2020-10-12 10:10:31 -07:00
Kartik Agaram
855431280d
7009 - tile: real hotkey to quit
2020-10-12 10:07:55 -07:00
Kartik Agaram
4d985cda1e
7008 - tile: center menu
2020-10-11 23:06:13 -07:00
Kartik Agaram
5668acaf44
7007 - tile: hotkey to clear sandbox
...
Alternative symbols considered for the menu option:
∅
AC (like in a calculator)
2020-10-11 23:00:45 -07:00
Kartik Agaram
e6c19a3465
7006
2020-10-11 22:56:46 -07:00
Kartik Agaram
fcdf04ee78
7005 - tile: move to start/end of line
2020-10-11 22:37:18 -07:00
Kartik Agaram
aceeba8d48
7004
2020-10-11 22:15:29 -07:00
Kartik Agaram
31a1ade9a2
7003
2020-10-11 22:11:03 -07:00
Kartik Agaram
9cbb6dce54
7002 - tile: next-word
2020-10-11 00:23:35 -07:00
Kartik Agaram
8c0d0c8464
7001
2020-10-11 00:17:24 -07:00
Kartik Agaram
1c441baf96
7000 - tile: previous-word also bumps up to caller
2020-10-11 00:11:04 -07:00
Kartik Agaram
28d99f031d
6999 - tile: move to previous word
2020-10-10 23:38:42 -07:00
Kartik Agaram
cfad9c494e
6998
2020-10-10 22:08:23 -07:00
Kartik Agaram
4b75c6b554
6997
2020-10-10 22:07:13 -07:00
Kartik Agaram
3d203a4484
6996
2020-10-10 21:43:34 -07:00
Kartik Agaram
7c2d5dc88b
6995
2020-10-10 21:40:03 -07:00
Kartik Agaram
24c4854223
6994
2020-10-10 21:32:43 -07:00
Kartik Agaram
818512d15a
6993
2020-10-10 21:31:33 -07:00
Kartik Agaram
07faf800ac
6992
...
Left arrow key out of an expanded word now working.
Still to fix: left arrow key out of the first word in the first word.
2020-10-10 21:30:02 -07:00
Kartik Agaram
ae6340f225
6991 - tile: nested calls now expanding
...
I just needed to remove an obsolete guardrail in render-line.
Still seeing some bugs with left-arrow when playing around with the full
expansion of `1 2+`.
2020-10-10 21:22:00 -07:00
Kartik Agaram
831a133a4b
6990
...
Bring back definitions for 1+ and 2+. Expanding nested calls still doesn't
work.
2020-10-10 02:08:46 -07:00
Kartik Agaram
dae19c9fe6
6989 - tile: arrow keys now seem to handle calls
2020-10-10 02:00:46 -07:00
Kartik Agaram
b25167a9ae
6988
...
Oh, of course. I can't compare the word with the word at the cursor. Not
even its interned pointer. We have to track the call path.
2020-10-10 01:43:12 -07:00
Kartik Agaram
e8367b2bc2
6987 - left-arrow to jump to caller/callee
...
Starting to work. I'm still seeing problems in lines with multiple expanded
calls, but perhaps that's a rendering issue.
The code is absolutely ghastly.
2020-10-10 01:42:58 -07:00
Kartik Agaram
f864cf0874
6986
...
Cursor now stays on the right row as we bounce in and out of function calls.
2020-10-09 23:43:24 -07:00
Kartik Agaram
5b7ccbc8f4
6985 - tile: make calls read-only
2020-10-09 23:35:19 -07:00
Kartik Agaram
cbd076e02c
6984
2020-10-09 23:32:50 -07:00
Kartik Agaram
6e93444ff4
6983 - tile: right-arrow can now move out of calls
2020-10-09 23:30:19 -07:00
Kartik Agaram
5ba974b4e5
6982 - right-arrow now moves into expanded calls
...
Rendering is still ugly. Cursor isn't on the right row. But the hard part
is behind us.
This was a stupid mistake in function-body, and it happened because I've
been getting lazy and passing (addr handle) objects when I should be passing
in "constant" addr objects.
I'm not sure why I was so resistant to debugging by print here. I spent
3 days waffling about with this bug.
2020-10-09 23:24:00 -07:00
Kartik Agaram
8c43582fb2
6981
...
Tile: simplify the contract for render-column.
2020-10-09 22:27:22 -07:00
Kartik Agaram
ec6221b485
6980
...
Changing tack..
2020-10-09 22:15:14 -07:00
Kartik Agaram
315926f732
6979
...
Use the fake-screen infrastructure we already have for non-interactive
mode.
2020-10-09 21:43:42 -07:00
Kartik Agaram
cb01075a2e
6978
...
We don't have tests yet in the tile prototype, mostly because we don't
yet feel confident about what desired behavior should be. But it's still
helpful to have a non-interactive mode for tracking down segfaults.
2020-10-09 21:25:32 -07:00
Kartik Agaram
7c6bb4d316
6977
...
Snapshot. We've gotten arrow keys navigating, but segfault when getting
to the second word in an expanded function call body.
2020-10-09 21:17:51 -07:00
Kartik Agaram
eb2ccccceb
6976
2020-10-09 21:10:14 -07:00
Kartik Agaram
0c465d1dcc
6975
2020-10-09 21:08:40 -07:00
Kartik Agaram
5659eccded
6974
2020-10-08 20:32:49 -07:00
Kartik Agaram
e9957c78da
6972 - tile: stop persisting cursor-word
...
Rather surprisingly, this transformation worked the first time!
2020-10-08 20:32:34 -07:00
Kartik Agaram
b8fd119b78
6969
...
Fix and cleanup.
2020-10-06 00:41:20 -07:00
Kartik Agaram
ce094a5d82
6968
...
Snapshot that requires a check in the Mu compiler.
Currently I don't spill a register if it could possibly be over-written
by a function output within. However, find-in-call-path is a good example
of where this constraint is too lenient and results in unsafe code. The
variable `curr` gets clobbered during loop update by the variable `match?`.
What's the answer? Perhaps we should ban all conditional updates to function
outputs? That'd be dashed inconvenient.
2020-10-06 00:36:28 -07:00
Kartik Agaram
e41bc160a0
6967
...
Function expand/contract still works, but the implementation is totally
different under the hood.
2020-10-05 22:21:27 -07:00
Kartik Agaram
a9e56c46c6
6966
2020-10-05 21:35:46 -07:00
Kartik Agaram
88e23b97df
6965
2020-10-05 21:32:45 -07:00
Kartik Agaram
c2844535f3
6964 - tile: start tracking word index in fn body
2020-10-05 21:22:42 -07:00
Kartik Agaram
21387ef514
6963 - tile: more idiomatic conventional repl
2020-10-05 21:09:42 -07:00
Kartik Agaram
6833b4542c
6962
...
Slowly hoist cursor-word from environment to sandbox. This isn't its final
destination.
2020-10-05 20:44:50 -07:00
Kartik Agaram
c626219e3f
6961
2020-10-05 20:37:47 -07:00
Kartik Agaram
5fa8e972d6
6960
2020-10-05 18:36:28 -07:00
Kartik Agaram
f13576b5d2
6957
...
The final fix to the raytracing program involves rounding modes. It turns
out x86 processors round floats by default, unlike C which has trained
me to expect truncation. Rather than mess with the MXCSR register, I added
another instruction for truncation. Now milestone 3 emits perfectly correct
results.
2020-10-05 10:25:25 -07:00
Kartik Agaram
fa2092a024
6953
2020-10-05 09:26:54 -07:00
Kartik Agaram
cdff5d73ce
6952 - raytracing: much better
...
The image is now visually indistinguishable from the baseline, though the
file isn't quite bit-for-bit correct.
I found 3 bugs:
a) I forgot to normalize the ray. After creating a helper to "automatically"
do it for me, it turns out said helper requires manually using.
b) I forgot to multiply by t at one place.
c) vec3-length was half-written.
For the umpteenth time, the bugs were all in the last place I looked. I
was worried about spending a lot of time transcribing `main` without any
feedback, but that turned out to be perfect.
2020-10-04 23:12:21 -07:00
Kartik Agaram
5c105a7aca
6949 - snapshot of next raytracing milestone
...
Not yet right, but worth a snapshot just because it gives a cool result.
Here, try it out:
$ ./translate_mu_debug apps/raytracing/3.mu
$ ./a.elf > x.ppm
Now view x.ppm as an image.
In general, this was quite tedious to write. And a still-open question
is how to emit the progress bar to stderr. My options are to either duplicate
all my print-* functions (already proliferating) or add global variables
to Mu.
2020-10-04 21:15:28 -07:00
Kartik Agaram
f5e1656d15
6948 - stress-testing prints of floats
...
Looks good.
2020-10-04 11:55:55 -07:00
Kartik Agaram
b8d613e7c2
6946 - print floats somewhat intuitively in hex
2020-10-04 11:18:23 -07:00
Kartik Agaram
93c6352dda
6943
...
Move some implementation around for floating-point.
I originally thought I wouldn't bother supporting sigils like %xmm0. But
it turns out I need them to pass floats into SubX function calls. And it
turns out the sigils work fine for free.
2020-10-04 00:54:57 -07:00
Kartik Agaram
1bf5d5f44e
6942
2020-10-04 00:19:54 -07:00
Kartik Agaram
2f5a8496e6
6940
2020-10-03 22:55:19 -07:00
Kartik Agaram
f6eba67645
6937
2020-10-03 20:24:14 -07:00
Kartik Agaram
cce9cda971
6935 - raytracing using floats
2020-10-03 20:17:08 -07:00
Kartik Agaram
4787d7d4b8
6934
2020-10-03 20:06:27 -07:00
Kartik Agaram
7b85e97ea8
6933
2020-10-03 19:50:24 -07:00
Kartik Agaram
42500e3f47
6932 - another bug related to floats
...
For most of Mu's history we've selected between primitives based on types
just by checking whether a type is a literal or not. Now we've started
checking if it's a float as well. However, floats need one additional check:
the call site may have an (addr float) that is dereferenced.
2020-10-03 13:55:52 -07:00
Kartik Agaram
c2ec9e21c9
6931 - support fp registers in variable lookup
2020-10-03 12:05:53 -07:00
Kartik Agaram
8719ea906d
6930
2020-10-03 11:40:26 -07:00
Kartik Agaram
b94e94e035
6927 - working on a raytracing tutorial
...
https://raytracing.github.io/books/RayTracingInOneWeekend.html
2020-10-03 00:24:57 -07:00
Kartik Agaram
4230946e6a
6925 - tile: don't try to print escape sequences
2020-10-01 22:49:31 -07:00
Kartik Agaram
f3ca0e3cb3
6922
2020-10-01 20:39:56 -07:00
Kartik Agaram
df04b364a6
6918
...
Fix CI.
2020-10-01 00:01:15 -07:00
Kartik Agaram
8d32a9aab9
6915 - a new family of Mu branch instructions
...
The realization of commit 6916 means that we should be using jump-if-addr*
after comparing floats. Which is super ugly. Let's create aliases to them
called jump-if-float*.
2020-09-30 23:46:43 -07:00
Kartik Agaram
72c42f90cf
6908 - compiling all floating-point operations
...
We don't yet support emulating these instructions in `bootstrap`. But generated
binaries containing them run natively just fine.
2020-09-30 21:17:37 -07:00
Kartik Agaram
558bf57587
6907 - converting to and from floating-point
...
Some bugfixes to the previous commit.
2020-09-29 22:17:25 -07:00
Kartik Agaram
c3176a3f70
6906
2020-09-29 21:41:58 -07:00
Kartik Agaram
a4ef7ce888
6905 - first floating-point instruction compiling
...
(Though the generated code doesn't work yet.)
2020-09-29 21:33:51 -07:00
Kartik Agaram
092205deb3
6904
...
New fields for primitives to support code-generation for floating-point
primitives.
2020-09-29 20:53:59 -07:00
Kartik Agaram
8246324ebb
6903
...
Make a few tests more self-contained.
I'd prefer to just run a function called `setup` first thing on startup
and move this portion of convert-mu to it:
# initialize global data structures
c7 0/subop/copy *Next-block-index 1/imm32
8b/-> *Primitive-type-ids 0/r32/eax
89/<- *Type-id 0/r32/eax # stream-write
c7 0/subop/copy *_Program-functions 0/imm32
c7 0/subop/copy *_Program-functions->payload 0/imm32
c7 0/subop/copy *_Program-types 0/imm32
c7 0/subop/copy *_Program-types->payload 0/imm32
c7 0/subop/copy *_Program-signatures 0/imm32
c7 0/subop/copy *_Program-signatures->payload 0/imm32
However, this approach doesn't fix my run_one_test tooling.
2020-09-29 20:33:29 -07:00
Kartik Agaram
cf1ddc4170
6902
2020-09-29 19:24:29 -07:00
Kartik Agaram
d2b9c7283a
6901
2020-09-29 09:14:09 -07:00
Kartik Agaram
55847cde87
6900 - mu.subx: new primitive type 'float'
...
Using it will currently emit incorrect programs.
2020-09-29 03:51:32 -07:00
Kartik Agaram
8cd797a165
6899
2020-09-29 03:51:32 -07:00
Kartik Agaram
8b1da9bbb2
6898 - names for floating-point xmm* registers
2020-09-29 03:51:19 -07:00
Kartik Agaram
3a2888ae47
6895
2020-09-28 22:19:18 -07:00
Kartik Agaram
64a39b29eb
6891
2020-09-27 23:14:18 -07:00
Kartik Agaram
4f872e345a
6889
...
Teach the self-hosted translator about the new /xm32 and /x32 metadata
for floating-point registers.
2020-09-27 23:00:04 -07:00
Kartik Agaram
7258083c6f
6884
2020-09-27 07:32:08 -07:00
Kartik Agaram
866cccca76
6883
2020-09-26 23:55:44 -07:00
Kartik Agaram
abab2fdefd
6882
2020-09-26 23:51:23 -07:00
Kartik Agaram
fec64dbc76
6881 - tile: function calls can now be expanded
2020-09-26 23:50:05 -07:00
Kartik Agaram
6e0ff0e5dc
6880
...
We need the state of the stack at the call-site. But rendering is already
working surprisingly well.
2020-09-26 23:40:47 -07:00
Kartik Agaram
4578687622
6879
...
Extract a new function.
2020-09-26 23:29:14 -07:00
Kartik Agaram
6f4ff604de
6878 - tile: mock-up for expanding function calls
2020-09-26 23:24:55 -07:00
Kartik Agaram
009559f1fb
6877
...
Track just whether to step inside or not.
2020-09-26 23:07:11 -07:00
Kartik Agaram
866e6e72a8
6876
...
Back to commit 6872.
2020-09-26 23:05:36 -07:00
Kartik Agaram
e5aa1b3cb6
6875
...
Snapshot. Caching subsidiary stacks is a dead end; they're just the final
iteration. We need to render all iterations.
2020-09-26 23:02:39 -07:00
Kartik Agaram
270dce161f
6874
2020-09-26 23:02:03 -07:00
Kartik Agaram
78cfd370e5
6873
...
Now saving the subsidiary stack.
2020-09-26 22:27:09 -07:00
Kartik Agaram
62c539d8ac
6872
...
Hackily show function definition.
2020-09-26 22:14:36 -07:00
Kartik Agaram
ef7f0a540a
6871
...
Segfault now fixed. Everything seems to be working again.
2020-09-26 22:10:34 -07:00
Kartik Agaram
ebb93c6d58
6870
...
Emit a stack of not ints but more complex objects containing the int payload.
Function calls again segfaulting.
2020-09-26 21:59:50 -07:00
Kartik Agaram
65e6633b79
6869
2020-09-26 21:30:04 -07:00
Kartik Agaram
5babe16f2d
6868
...
First function call working in apps/tile!
2020-09-26 21:26:20 -07:00
Kartik Agaram
e46cfc2e0c
6867
...
Segfault fixed. This shouldn't have been so hard.
2020-09-26 20:47:52 -07:00
Kartik Agaram
42349345f4
6866
2020-09-26 20:15:45 -07:00
Kartik Agaram
b8682e7349
6865
2020-09-26 20:14:06 -07:00
Kartik Agaram
a060a4dc30
6864
2020-09-26 20:07:58 -07:00
Kartik Agaram
70dba10a6c
6863
2020-09-26 20:05:12 -07:00
Kartik Agaram
88d690ccad
6862
...
Fix CI.
2020-09-26 20:00:54 -07:00
Kartik Agaram
11d3ce7146
6861 - tile: conventional repl
2020-09-26 19:15:04 -07:00
Kartik Agaram
e0bceffe08
6860
...
Snapshot: tile currently segfaulting. I need to back up and make it easier
to debug.
2020-09-26 13:41:23 -07:00
Kartik Agaram
fca30f0f86
6859
2020-09-25 20:05:10 -07:00
Kartik Agaram
2929ca471b
6857
2020-09-25 16:58:18 -07:00