aboutsummaryrefslogtreecommitdiff
path: root/source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-04-13 17:37:10 +0200
committerAdrian Kummerlaender2019-04-13 17:37:10 +0200
commit714a92a163645bb436b1e8f4c56a818656c35f8a (patch)
tree6309e2623062af6a32f6149b39607a0904056681 /source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md
parent8505560ec12b96a3bcc9369352bf85faf3b9698c (diff)
downloadOverview-714a92a163645bb436b1e8f4c56a818656c35f8a.tar
Overview-714a92a163645bb436b1e8f4c56a818656c35f8a.tar.gz
Overview-714a92a163645bb436b1e8f4c56a818656c35f8a.tar.bz2
Overview-714a92a163645bb436b1e8f4c56a818656c35f8a.tar.lz
Overview-714a92a163645bb436b1e8f4c56a818656c35f8a.tar.xz
Overview-714a92a163645bb436b1e8f4c56a818656c35f8a.tar.zst
Overview-714a92a163645bb436b1e8f4c56a818656c35f8a.zip
Remove newly extracted features
i.e. Overview is now a mostly pure aggregator again. The new commit / blip feature is now maintained in `blip.kummerlaender.eu`.
Diffstat (limited to 'source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md')
-rw-r--r--source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md21
1 files changed, 0 insertions, 21 deletions
diff --git a/source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md b/source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md
deleted file mode 100644
index ad39eee..0000000
--- a/source/00_content/commits/slang/2017_04_13_21_51_d2126fe52fd3c002631e66fa7d6e2d5cd8862bea.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Implement deferred word, conditional resolution
-
-Due to the non-trivial way tokens were previously processed the compiler could not safely perform tail-call elimination. Thus the _slang_ evaluation depth was restricted by the maximum call stack size.
-
-This issue is mitigated by introducing deferred word resolution - i.e. pushing expanded tokens onto a buffer stack and processing them in an explicit loop.
-
-This change ties into the implementation of the language's conditional primitive. The previous implementation did implicitly not support direct nesting of conditional expressions such as:
-
- truthA if
- mainBranch
- truthB if
- secondaryMainBranch
- then else
- then
- alternativeBranch
- else
-
-This issue is now made explicit by disallowing direct nesting of conditionals as depicted above. Appropriate exceptions are generated when required and the conditional primitive is reimplemented in a more robust fashion under the assumption that this rule holds. Note that nesting is still fully supported iff. the nested conditional is contained in a deferredly evaluated word. As a positive side effect this will make it slightly harder to generate unreadable code by forcing developers to write simpler words.
-
-The main change of the conditional primitive lies in deferring branch token processing until the conditional expression is concluded by `else`. This is achieved by capturing non-dropped tokens in an internal buffer akin to how the word definition operator `ยง` is implemented.
-The branch buffer is discharged after `else` is evaluated. Discharging is triggered via the newly introduced `result` method of the primitive evaluation module. This avenue for injecting tokens into the processing stream may be used by further primitives in the future.