{"version": 2, "width": 80, "height": 30, "timestamp": 1719416115, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} [0.004114, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[?1h\u001b=\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;30r\u001b[>c\u001b[>q\u001b[1;1H"] [0.004639, "o", "\u001b[?25l\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[8] 0:bash* \"debian\" 11:35 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[?1006l\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?2004l\u001b[1;1H\u001b[1;30r\u001b[1;1H\u001b[?25l\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[8] 0:bash* \"debian\" 11:35 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;1H"] [0.004703, "o", "\u001b[?7727h"] [0.021318, "o", "\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo\u001b(B\u001b[m$ \u001b[?2004h"] [1.46138, "o", "\u001b[?25l\u001b[23;1H─────────────────────────────────────────\u001b[32m───────────────────────────────────────\u001b(B\u001b[m\u001b[32m\u001b[1m\u001b[1;1Hvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo\u001b(B\u001b[m$ \u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[2B\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[8] 0:bash* \"debian\" 11:35 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[24;1H\u001b[?2004l"] [1.461703, "o", "\u001b[H\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo\u001b(B\u001b[m$ \u001b[K\u001b[24;1H"] [1.462518, "o", "Let's talk about immediate and inlining mechanics in Dusk\r\n"] [1.464951, "o", "\u001b[?25l\u001b[2A\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[1;24H\u001b[?2004h"] [6.471139, "o", "\u001b[25;1HAs with any Forth, Dusk has immediates\u001b[1;24H"] [7.100973, "o", "c"] [7.164549, "o", "d"] [7.436526, "o", " "] [9.684774, "o", "d"] [9.788508, "o", "u"] [9.873856, "o", "skv8/"] [12.380818, "o", "u"] [12.508788, "o", "s"] [12.626689, "o", "ermode/"] [12.892664, "o", "\r\n\u001b[?2004l"] [12.892928, "o", "\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskv8/usermode\u001b(B\u001b[m$ \u001b[?2004h"] [13.57283, "o", "."] [13.628541, "o", "/"] [13.772672, "o", "d"] [13.909012, "o", "u"] [13.973569, "o", "sk\u0007"] [14.908859, "o", "-"] [15.044843, "o", "c"] [15.228646, "o", "u"] [15.284518, "o", "r"] [15.460983, "o", "ses "] [16.14864, "o", "\r\n\u001b[?2004l"] [16.151066, "o", "\u001b[?25l\u001b[H\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[H"] [16.329431, "o", "Dusk OS\r\n121KB used 31MB free ok\r\n"] [17.668924, "o", "\u001b[?25l\u001b[23d\u001b[32m─────────────────────────────────────────\u001b[39m───────────────────────────────────────\u001b(B\u001b[m\u001b[30m\u001b[42m\u001b[30;1H[8] 0:./dusk-curses* \"debian\" 11:35 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;1H"] [17.66917, "o", ":"] [18.301692, "o", " "] [18.484057, "o", "f"] [18.676612, "o", "o"] [18.813118, "o", "o"] [18.901257, "o", " "] [19.765316, "o", "."] [20.077312, "o", "\""] [20.868752, "o", "h"] [20.965035, "o", "e"] [21.117195, "o", "l"] [21.229109, "o", "l"] [21.381312, "o", "o"] [22.069465, "o", "\""] [22.62156, "o", " "] [23.548943, "o", ";"] [23.653778, "o", " "] [23.829249, "o", "i"] [24.029303, "o", "m"] [24.149052, "o", "m"] [24.245394, "o", "e"] [25.229853, "o", "d"] [25.661295, "o", "i"] [25.732817, "o", "a"] [25.917511, "o", "t"] [25.964532, "o", "e"] [27.070257, "o", "\r\n ok\r\n"] [28.502436, "o", "\u001b[26dWe know how that works...\u001b[5;1H"] [29.636998, "o", "f"] [29.821774, "o", "o"] [29.925607, "o", "o"] [30.165298, "o", "\r\nhello ok\r\n"] [31.021671, "o", ":"] [31.277683, "o", " "] [31.80545, "o", "b"] [31.900851, "o", "a"] [31.981455, "o", "r"] [32.108849, "o", " "] [32.693014, "o", "f"] [32.821652, "o", "o"] [32.941022, "o", "o"] [33.309985, "o", " "] [33.549263, "o", ";"] [33.965801, "o", "\r\nhello ok\r\n"] [36.514953, "o", "\u001b[27dBut what if you want to have a compile time behavior different from runtime?\u001b[9;1H"] [40.521388, "o", "\u001b[28dIn many other Forths, it works like this...\u001b[9;1H"] [42.28468, "o", ":"] [42.493677, "o", " "] [42.629569, "o", "f"] [42.72529, "o", "o"] [42.861201, "o", "o"] [42.933377, "o", " "] [43.757535, "o", "c"] [43.972969, "o", "o"] [44.012864, "o", "m"] [44.172972, "o", "p"] [44.245133, "o", "i"] [44.37338, "o", "l"] [44.540902, "o", "i"] [44.589052, "o", "n"] [44.765163, "o", "g"] [44.852882, "o", " "] [45.003865, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[8] 0:./dusk-curses* \"debian\" 11:36 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[9;17H"] [45.045533, "o", "i"] [46.029778, "o", "g"] [46.181491, "o", " "] [47.293268, "o", "\b"] [47.405025, "o", "\b \b"] [47.509352, "o", "f"] [48.117242, "o", " "] [48.565014, "o", "."] [48.772956, "o", "\""] [49.116566, "o", "c"] [49.196922, "o", "o"] [49.228945, "o", "m"] [49.365337, "o", "p"] [49.413647, "o", "i"] [49.532862, "o", "l"] [49.621604, "o", "e"] [50.028746, "o", "\""] [50.30986, "o", " "] [51.14146, "o", "e"] [51.269695, "o", "l"] [51.3404, "o", "s"] [51.469265, "o", "e"] [51.572778, "o", " "] [51.893959, "o", "."] [52.197312, "o", "\""] [53.012911, "o", "r"] [53.101577, "o", "u"] [53.148888, "o", "n"] [53.980886, "o", "\""] [54.333568, "o", " "] [54.781778, "o", "t"] [54.877649, "o", "h"] [54.957571, "o", "e"] [55.037536, "o", "n"] [55.101604, "o", " "] [55.325203, "o", ";"] [56.221592, "o", " "] [56.525306, "o", "i"] [56.725327, "o", "m"] [56.837202, "o", "m"] [56.941047, "o", "e"] [57.005115, "o", "d"] [57.133904, "o", "i"] [57.197622, "o", "a"] [57.366096, "o", "t"] [57.40547, "o", "e"] [59.548174, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ABut not in Dusk\r\n\u001b[K\u001b[1;30r\u001b[9;59H"] [60.357467, "o", "\r\ncompiling word not found ok\r\n"] [64.5565, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThis approach works fine most of the time,\r\n\u001b[K\u001b[1;30r\u001b[11;1H"] [66.560417, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Abut having a global behavior selection flag makes some situations tricky\r\n\u001b[K\u001b[1;30r\u001b[11;1H"] [68.564278, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ADusk has a fancy word inlining feature and we run into those tricky situations\r\n\u001b[K\u001b[1;30r\u001b[11;1H"] [70.567974, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWe need something more flexible\r\n\u001b[K\u001b[1;30r\u001b[11;1H"] [73.57291, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ASo we begin by defining the \"runtime\" version of the word\r\n\u001b[K\u001b[1;30r\u001b[11;1H"] [77.797402, "o", ":"] [78.252906, "o", " "] [78.509344, "o", "f"] [78.701697, "o", "o"] [78.821168, "o", "o"] [78.917814, "o", " "] [79.70099, "o", "."] [80.204648, "o", "\""] [80.861666, "o", "r"] [81.069898, "o", "u"] [81.108866, "o", "n"] [81.229588, "o", "t"] [81.317856, "o", "i"] [81.356974, "o", "m"] [81.477451, "o", "e"] [82.14114, "o", "\""] [82.388909, "o", " "] [82.572566, "o", ";"] [83.324921, "o", "\r\n ok\r\n"] [84.133486, "o", "f"] [84.300998, "o", "o"] [84.404912, "o", "o"] [84.621048, "o", "\r\nruntime ok\r\n"] [86.591627, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AAnd then define the same word again with a \"compileonly\" flag set\r\n\u001b[K\u001b[1;30r\u001b[15;1H"] [89.045704, "o", ":"] [89.261631, "o", " "] [89.885442, "o", "f"] [90.157104, "o", "o"] [90.285754, "o", "o"] [91.173858, "o", " "] [91.901275, "o", "."] [92.404757, "o", "\""] [93.397261, "o", "c"] [93.821542, "o", "o"] [93.853336, "o", "m"] [94.012616, "o", "p"] [94.077462, "o", "i"] [94.196982, "o", "l"] [94.33346, "o", "e"] [95.012706, "o", "\""] [95.372719, "o", " "] [97.141403, "o", ";"] [97.34871, "o", " "] [98.413766, "o", "i"] [98.66084, "o", "m"] [98.77286, "o", "m"] [98.86959, "o", "e"] [98.957028, "o", "d"] [99.085594, "o", "i"] [99.173737, "o", "a"] [99.301193, "o", "t"] [99.389179, "o", "e"] [100.045241, "o", " "] [100.365286, "o", "c"] [100.476917, "o", "o"] [100.50075, "o", "m"] [100.68539, "o", "p"] [100.741617, "o", "i"] [100.869632, "o", "l"] [101.013417, "o", "e"] [101.325496, "o", "o"] [101.372785, "o", "n"] [101.525721, "o", "l"] [101.693569, "o", "t"] [102.229426, "o", "\b \b"] [102.309618, "o", "y"] [103.701902, "o", "\r\n ok\r\n"] [105.005688, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[8] 0:./dusk-curses* \"debian\" 11:37 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[17;1H"] [106.620295, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[A\"compileonly\" flags are \"unfindable\" during interpret time\r\n\u001b[K\u001b[1;30r\u001b[17;1H"] [108.837796, "o", "f"] [108.997252, "o", "o"] [109.101125, "o", "o"] [110.085863, "o", "\r\nruntime ok\r\n"] [112.629689, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[A... but they can be found at compile time!\r\n\u001b[K\u001b[1;30r\u001b[19;1H"] [113.453121, "o", ":"] [114.173552, "o", " "] [114.637681, "o", "b"] [114.765441, "o", "a"] [114.829451, "o", "r"] [114.981863, "o", " "] [115.133794, "o", "f"] [115.25373, "o", "o"] [115.373403, "o", "o"] [115.565658, "o", " "] [115.78126, "o", ";"] [116.27737, "o", "\r\ncompile ok\r\n"] [122.644554, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[A[compile] uses the \"compile time\" find, but everything else don't\r\n\u001b[K\u001b[1;30r\u001b[21;1H"] [125.54912, "o", ":"] [125.884953, "o", " "] [126.157809, "o", "b"] [126.365742, "o", "a"] [126.437655, "o", "r"] [126.589011, "o", " "] [127.508759, "o", "["] [128.213592, "o", "c"] [128.30189, "o", "o"] [128.342071, "o", "m"] [128.485594, "o", "p"] [128.54156, "o", "i"] [128.660849, "o", "l"] [128.765667, "o", "e"] [129.26153, "o", "]"] [129.453762, "o", " "] [130.036877, "o", "f"] [130.301789, "o", "o"] [130.40527, "o", "o"] [130.869032, "o", " "] [131.045213, "o", ";"] [132.446225, "o", "\u001b[1;22r\u001b[22;1H\n\u001b[A ok\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [133.076995, "o", "b"] [133.157171, "o", "a"] [133.221741, "o", "r"] [133.373842, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21dcompile ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [135.278044, "o", ":"] [135.461562, "o", " "] [135.613778, "o", "b"] [135.701095, "o", "a"] [135.756823, "o", "r"] [135.893113, "o", " "] [136.869232, "o", "["] [137.053559, "o", "r"] [137.269176, "o", "c"] [137.365986, "o", "o"] [137.413656, "o", "m"] [137.57408, "o", "p"] [137.629748, "o", "i"] [137.757062, "o", "l"] [137.852684, "o", "e"] [138.045528, "o", "]"] [138.33357, "o", " "] [138.80566, "o", "f"] [138.91784, "o", "o"] [139.029913, "o", "o"] [139.173022, "o", " "] [139.348968, "o", ";"] [141.381564, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [142.381049, "o", "b"] [142.460817, "o", "a"] [142.53318, "o", "r"] [143.509117, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21druntime ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [146.677701, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ASo, what do we do with that flexibility? Inlining!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [150.684057, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AMany small words in Dusk automatically inline themselves\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [154.690407, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWhy? let's see by recreating the word \"nip\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [156.341277, "o", "c"] [156.533834, "o", "o"] [156.588961, "o", "d"] [156.765421, "o", "e"] [157.133642, "o", " "] [157.54985, "o", "n"] [157.653249, "o", "i"] [157.877333, "o", "p"] [159.12521, "o", " "] [159.533786, "o", "4"] [159.668761, "o", " "] [160.1094, "o", "p"] [160.221279, "o", "s"] [160.54137, "o", "+"] [161.269929, "o", ","] [161.500983, "o", " "] [162.261063, "o", "e"] [162.397101, "o", "x"] [162.549881, "o", "i"] [162.637985, "o", "t"] [162.948824, "o", ","] [163.678165, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [164.66152, "o", "n"] [164.845512, "o", "e"] [164.965849, "o", "e"] [165.010618, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[8] 0:./dusk-curses* \"debian\" 11:38 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;4H"] [165.173107, "o", "d"] [165.261081, "o", "s"] [166.421269, "o", " "] [166.629194, "o", "a"] [166.693211, "o", "s"] [166.885759, "o", "m"] [167.229359, "o", " "] [167.709366, "o", "i"] [168.221599, "o", "3"] [168.485542, "o", "8"] [168.716896, "o", "6"] [169.061491, "o", "d"] [170.013906, "o", "\b \b"] [170.133561, "o", "\b \b"] [170.277755, "o", "\b \b"] [170.405602, "o", "\b \b"] [170.541608, "o", "\b \b"] [170.669927, "o", "\b"] [170.909237, "o", "/"] [171.493204, "o", "i"] [172.053708, "o", "3"] [172.389414, "o", "8"] [172.541028, "o", "6"] [172.957461, "o", "d"] [173.434103, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [174.725213, "o", "'"] [174.813391, "o", " "] [175.085242, "o", "n"] [175.237898, "o", "i"] [175.429138, "o", "p"] [175.686138, "o", " "] [176.478051, "o", "d"] [176.573776, "o", "i"] [176.652944, "o", "s"] [176.934569, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[2d' nip dis\r\nf5c54864 ADD ESI,04\u001b[7C83 c6 04\r\nf5c54867 RET c3\u001b[K\r\nf5c54868 MOV\u001b[15C8c\r\nf5c54869 INC ESP\u001b[10C44\r\nf5c5486a LDS\u001b[15Cc5\r\nf5c5486b CMC\u001b[15Cf5\r\nf5c5486c MOV AL,48\u001b[8Cb0 48\r\nf5c5486e LDS \u001b[6Cc5\r\nf5c5486f CMC\u001b[15Cf5\r\nf5c54870 CMP AL,4a\u001b[8C3c 4a\r\nf5c54872 LDS\u001b[15Cc5\r\nf5c54873 CMC f5\r\nf5c54874 POP\u001b[15C07\r\nf5c54875 INS B\u001b[12C6c\r\nf5c54876 IMUL [EDX+2f],ESP,6c746962\u001b[1;30r\u001b[18;1H 69 62 2f 62 69 74 6c\r\nf5c5487d IMUL [EDX+2f],ESP,87746962\r\n 69 62 2f 62 69 74 87\u001b[22;1H"] [184.731507, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWith a top of stack register, \"nip\" means \"shrink PS by 4\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [188.737786, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThis is what this HAL code does\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [191.742828, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWorks as expected...\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [194.453275, "o", "1"] [194.581021, "o", " "] [194.861032, "o", "2"] [194.950052, "o", " "] [195.181655, "o", "3"] [195.293679, "o", " "] [195.829659, "o", "n"] [195.965492, "o", "i"] [196.165067, "o", "p"] [196.301747, "o", " "] [196.573985, "o", "."] [196.678267, "o", " "] [196.853404, "o", "."] [197.405794, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [202.758839, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Aand when compiled, generates a simple call to it\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [203.34938, "o", ":"] [204.229076, "o", " "] [204.87716, "o", "f"] [205.021825, "o", "o"] [205.141659, "o", "o"] [205.238302, "o", " "] [205.685224, "o", "n"] [205.837117, "o", "i"] [206.037529, "o", "p"] [206.229925, "o", " "] [207.133696, "o", ";"] [209.469482, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [210.557415, "o", "1"] [210.653234, "o", " "] [210.82954, "o", "2"] [210.933856, "o", " "] [211.06987, "o", "3"] [211.189834, "o", " "] [211.326141, "o", "f"] [211.485508, "o", "o"] [211.621883, "o", "o"] [211.7012, "o", " "] [211.916886, "o", "."] [212.070281, "o", " "] [212.221285, "o", "."] [212.429869, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [214.733686, "o", "'"] [214.813644, "o", " "] [214.990252, "o", "f"] [215.109133, "o", "o"] [215.229642, "o", "o"] [215.293559, "o", " "] [215.46923, "o", "d"] [215.55009, "o", "i"] [215.62907, "o", "s"] [216.310174, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[H ok\u001b[K\r\n1 2 3 foo . .\u001b[K\r\n31 ok\u001b[K\r\n' foo dis\u001b[K\u001b[5;5H67f4 CALL f5c54864 nip\u001b[6;5H67f9 RET \u001b[8Cc3 \u001b[7;5H67fa ADD {EAX},AL 00 00\u001b[8;5H67fc ADD {EAX},AL 00 00\u001b[9;5H67fe ADD {EAX},AL\u001b[6C0 00\u001b[1;30r\u001b[10;5H6800 ADD {EAX},AL 00 00\u001b[11;5H6802 ADD {EAX},AL 00 00 \r\nf5c56804 ADD {EAX},AL 00 00\u001b[13;5H6806 ADD {EAX},AL 00 00 \r\nf5c56808 ADD {EAX},AL 00 00\r\nf5c5680a ADD {EAX},AL 00 00\r\nf5c5680c ADD {EAX},AL 00 00\r\nf5c5680e ADD {EAX},AL 00 00\r\nf5c56810 ADD {EAX},AL 00 00\r\nf5c56812 ADD {EAX},AL 00 00\r\nf5c56814 ADD {EAX},AL 00 00\r\n\u001b[2P\r\n"] [220.783981, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AA whole call! all for something a simple and quick as a nip? what a waste!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [224.949202, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[8] 0:./dusk-curses* \"debian\" 11:39 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [228.795736, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[ALet's create an inlinable nip\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [234.804649, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AFirst, we create a nip \"compiler\"\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [236.229189, "o", ":"] [236.501242, "o", " "] [237.405568, "o", "n"] [237.525372, "o", "i"] [237.8129, "o", "p"] [238.077615, "o", ","] [238.821171, "o", " "] [239.245151, "o", "4"] [239.349451, "o", " "] [239.597644, "o", "p"] [239.685116, "o", "s"] [240.037448, "o", "+"] [240.32553, "o", ","] [240.581625, "o", " "] [241.597736, "o", ";"] [245.517942, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [247.485616, "o", "c"] [247.693353, "o", "o"] [247.765552, "o", "d"] [247.909025, "o", "e"] [248.05361, "o", " "] [249.825504, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThen, the runtime of nip...\r\n\u001b[K\u001b[1;30r\u001b[22;6H"] [251.109082, "o", "n"] [251.181388, "o", "i"] [251.4301, "o", "p"] [252.198067, "o", " "] [252.894047, "o", "n"] [252.997028, "o", "i"] [253.229807, "o", "p"] [253.452882, "o", ","] [253.557667, "o", " "] [253.854053, "o", "e"] [254.36601, "o", "x"] [254.541301, "o", "i"] [254.645641, "o", "t"] [255.174373, "o", ","] [262.07822, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [265.84818, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Athen, its compile time behavior\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [267.037126, "o", ":"] [267.341483, "o", " "] [268.325154, "o", "n"] [268.390066, "o", "i"] [268.67787, "o", "p"] [269.277521, "o", " "] [270.694139, "o", "n"] [270.773605, "o", "i"] [270.998099, "o", "p"] [271.870159, "o", ","] [272.301532, "o", " "] [273.909659, "o", ";"] [274.174112, "o", " "] [275.357561, "o", "i"] [275.573491, "o", "m"] [275.68608, "o", "m"] [275.773637, "o", "e"] [275.910064, "o", "d"] [275.981484, "o", "i"] [276.101339, "o", "a"] [276.205443, "o", "t"] [276.285217, "o", "e"] [276.973658, "o", " "] [277.477473, "o", "c"] [277.749193, "o", "o"] [277.789246, "o", "m"] [277.981603, "o", "p"] [278.045979, "o", "i"] [278.19784, "o", "l"] [278.526008, "o", "e"] [278.726122, "o", "o"] [278.773513, "o", "n"] [278.918081, "o", "l"] [279.677523, "o", "y"] [282.126503, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [285.01413, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30d[8] 0:./dusk-curses* \"debian\" 11:40 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [289.566088, "o", "1"] [289.630136, "o", " "] [290.597492, "o", "2"] [290.733073, "o", " "] [291.108958, "o", "3"] [291.23791, "o", " "] [293.005626, "o", "n"] [293.093433, "o", "i"] [293.285934, "o", "p"] [293.414023, "o", " "] [293.605882, "o", "."] [293.701568, "o", " "] [293.877887, "o", "."] [294.350282, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [296.890099, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AWhat happens when we use this in a word?\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [298.566043, "o", ":"] [298.790356, "o", " "] [300.229632, "o", "f"] [300.686123, "o", "o"] [300.837543, "o", "o"] [300.910046, "o", " "] [301.701828, "o", "n"] [301.790109, "o", "i"] [302.005015, "o", "p"] [302.261754, "o", " "] [302.436965, "o", ";"] [304.382161, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [305.902941, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Aworks as expected, of course...\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [307.237968, "o", "1"] [307.341311, "o", " "] [307.502234, "o", "2"] [307.622068, "o", " "] [307.79759, "o", "3"] [307.877473, "o", " "] [308.35741, "o", "f"] [308.453986, "o", "o"] [308.573222, "o", "o"] [308.654277, "o", " "] [308.894012, "o", "."] [309.021566, "o", " "] [309.18099, "o", "."] [309.43731, "o", "\u001b[1;22r\u001b[1;1H\u001b[2S\u001b[21d31 ok\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [314.916379, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[Aand generates super efficient code!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [316.357271, "o", "'"] [316.485743, "o", " "] [316.65357, "o", "f"] [316.806194, "o", "o"] [316.942069, "o", "o"] [316.99818, "o", " "] [317.549943, "o", "d"] [317.710055, "o", "i"] [317.781793, "o", "s"] [318.246585, "o", "\u001b[1;22r\u001b[22;1H\u001b[K\u001b[H ok\u001b[K\r\n1 2 3 foo . .\u001b[K\r\n31 ok\u001b[K\r\n' foo dis\u001b[K\u001b[5;7H3c\u001b[6CESI,04 83 c6 04\u001b[6;7H3f RET c3 \u001b[7;7H40\u001b[8;7H42\r\nf5c56844 ADD {EAX},AL 00 00\r\nf5c56846 ADD {EAX},AL 00 00\r\nf5c56848 ADD {EAX},AL 00 00\r\nf5c5684a ADD {EAX},AL 00 00\u001b[1;30r\u001b[13;1Hf5c5684c ADD {EAX},AL 00 00\r\nf5c5684e ADD {EAX},AL 00 00 \r\nf5c56850 ADD {EAX},AL 00 00\r\nf5c56852 ADD {EAX},AL 00 00\r\nf5c56854 ADD {EAX},AL 00 00\r\nf5c56856 ADD {EAX},AL 00 00\r\nf5c56858 ADD {EAX},AL 00 00\r\nf5c5685a ADD {EAX},AL 00 00\r\n\u001b[2P\r\n"] [325.932196, "o", "\u001b[24;29r\u001b[29;1H\n\u001b[AThat was immediate and inlining mechanism in Dusk, goodbye!\r\n\u001b[K\u001b[1;30r\u001b[22;1H"] [332.9447, "o", "\u001b[?25l\u001b[H ok\u001b[K\r\n1 2 3 foo . .\u001b[K\r\n31 ok\u001b[K\r\n' foo dis\u001b[K\r\nf5c5683c ADD ESI,04 83 c6 04\u001b[K\r\nf5c5683f RET c3 \u001b[K\r\nf5c56840 ADD {EAX},AL 00 00\u001b[K\r\nf5c56842 ADD {EAX},AL 00 00\u001b[K\r\nf5c56844 ADD {EAX},AL 00 00\u001b[K\r\nf5c56846 ADD {EAX},AL 00 00\u001b[K\r\nf5c56848 ADD {EAX},AL 00 00\u001b[K\r\nf5c5684a ADD {EAX},AL 00 00\u001b[K\r\nf5c5684c ADD {EAX},AL 00 00\u001b[K\r\nf5c5684e ADD {EAX},AL 00 00 \u001b[K\r\nf5c56850 ADD {EAX},AL 00 00\u001b[K\r\nf5c56852 ADD {EAX},AL 00 00\u001b[K\r\nf5c56854 ADD {EAX},AL 00 00\u001b[K\r\nf5c56856 ADD {EAX},AL 00 00\u001b[K\r\nf5c56858 ADD {EAX},AL 00 00\u001b[K\r\nf5c5685a ADD {EAX},AL 00 00\u001b[K\r\n ok\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[30m\u001b[42m\r\n[8] 0:./dusk-curses* \"debian\" 11:40 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[22;1H"] [332.945041, "o", "\u001b[1;29r\u001b[1;1H\u001b[2;29r\u001b[28S\u001b[1;1H\u001b[K ok\r\n1 2 3 foo . .\r\n31 ok\u001b[1;30r\u001b[4;1H"] [332.945204, "o", "' foo dis\r\nf5c5683c ADD ESI,04\u001b[7C83 c6 04\r\nf5c5683f RET\u001b[15Cc3\r\nf5c56840 ADD {EAX},AL 00 00\r\nf5c56842 ADD {EAX},AL 00 00\r\nf5c56844 ADD {EAX},AL 00 00\r\nf5c56846 ADD {EAX},AL 00 00\r\nf5c56848 ADD {EAX},AL 00 00\r\nf5c5684a ADD {EAX},AL 00 00\r\nf5c5684c ADD {EAX},AL 00 00\r\nf5c5684e ADD {EAX},AL 00 00\r\nf5c56850 ADD {EAX},AL 00 00\r\nf5c56852 ADD {EAX},AL 00 00\r\nf5c56854 ADD {EAX},AL 00 00\r\nf5c56856 ADD {EAX},AL 00 00\r\nf5c56858 ADD {EAX},AL 00 00\r\nf5c5685a ADD {EAX},AL 00 00\r\n ok\r\nIgnoring unknown key: 0000019a\r\n"] [333.965748, "o", "\u001b[1;29r\u001b[1;1H\u001b[2S\u001b[28d\u001b[K\r\n\u001b[K\u001b[1;30r\u001b[20;1H \nok\r\n"] [335.373201, "o", "b"] [335.437121, "o", "y"] [335.534088, "o", "e"] [335.68582, "o", "\u001b[1;29r\u001b[29;1H\n\u001b[5A\u001b[1mPress any key to exit.\u001b(B\u001b[m\u001b[29;1H\u001b[K\u001b[1;30r\u001b[25;1H"] [336.27756, "o", "\u001b[?25l\u001b[32m\u001b[1m\u001b[Hvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo\u001b(B\u001b[m$ cd duskv8/usermode/\u001b[K\u001b[32m\u001b[1m\r\nvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskv8/usermode\u001b(B\u001b[m$ ./dusk-curses \u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\u001b[?12l\u001b[?25h\u001b[3d"] [336.278155, "o", "\u001b[32m\u001b[1mvdupras@debian\u001b(B\u001b[m:\u001b[34m\u001b[1m~/demo/duskv8/usermode\u001b(B\u001b[m$ \u001b[?2004h"] [337.46148, "o", "\u001b[?25l\u001b[30m\u001b[42m\u001b[30;1H[8] 0:bash* \"debian\" 11:40 26-Jun-24\u001b(B\u001b[m\u001b[?12l\u001b[?25h\u001b[3;40H"] [337.461822, "o", "\r\n\u001b[?2004l"] [337.46191, "o", "logout\r\n"] [337.465506, "o", "\u001b[1;30r\u001b(B\u001b[m\u001b[?1l\u001b>\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1003l\u001b[?1006l\u001b[?1005l\u001b[?7727l\u001b[?1004l\u001b[?1049l\u001b[23;0;0t"] [337.465697, "o", "[exited]\r\n"]