ChangeLog 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. 2018-02-10 Eric Bavier <bavier@member.fsf.org>
  2. joy: Support concatenating scripts and stack initialization.
  3. * joy/ui.scm (compile-and-run): Move compilation logic to...
  4. (compile-files): ...this new procedure.
  5. (simple-interpret): New procedure.
  6. (%options): Add "stack" option.
  7. (show-help): mention it.
  8. (joy-main): Collect stack non-option arguments after '--stack' into
  9. an initial stack, after being "interpreted".
  10. * doc/joy.texi (Invoking joy): Document command-line options.
  11. * tests/joy.at: New tests.
  12. * tests.am (TEST_MODULES): Add it.
  13. * tests/testsuite.at: Include it.
  14. * .dir-locals.el: Indent "parameterize"
  15. 2017-08-11 Eric Bavier <bavier@member.fsf.org>
  16. Add .dir-locals.el
  17. tests: Add simple tests for the REPL.
  18. * tests/joy-repl.at: New file.
  19. * tests/testsuite.at: Include it.
  20. * tests.am (TEST_MODULES): Add it.
  21. joy: Customize repl welcome banner.
  22. * joy/ui.scm (show-version): Simple reformatting to taste.
  23. (repl-welcome): New procedure. Override the one called by 'run-repl'.
  24. 2017-08-11 Eric Bavier <bavier@member.fsf.org>
  25. joy: Fix joy-repl for Guile 2.2.
  26. * language/joy-repl/spec.scm (call): New variable.
  27. (compile-repl-tree-il): Use it instead of "apply".
  28. 2017-08-11 Eric Bavier <bavier@member.fsf.org>
  29. joy: Fix distcheck.
  30. This is mostly fixing the 'joy' script so that it can load the modules
  31. it needs once they are installed, which means it can't load any itself
  32. until it has augmented Guile's load paths.
  33. * configure.ac (AC_CONFIG_FILES): Remove scripts/joy.
  34. * scripts/joy.in: Move the bulk of the interface to...
  35. * joy/ui.scm: ...this new file.
  36. * Makefile.am (MODULES): Add it.
  37. (JOY_MODULES): Prefix with "lib" directory, so we don't have to
  38. nobase.
  39. (scripts/joy): New target. Create at 'make' time, so that we can let
  40. make expand the directories we need to know about. This follows
  41. guidelines outlined in Automake's manual.
  42. (EXTRA_DIST): Add scripts/joy.in, as configure no longer handles it.
  43. (DISTCLEANFILES): New variable.
  44. (AM_V_GUILEC): Fix justification.
  45. * tests.am (CLEANFILES,DISTCLEANFILES): New variables.
  46. * language/joy/primitives.scm (include): Do not augment %load-path
  47. * pre-inst-env.in (GUILE_LOAD_COMPILED_PATH,GUILE_LOAD_PATH,PATH):
  48. Adjust for new module locations.
  49. * tests/test-base.joy, tests/test-forth.joy: Remove "tests/" prefix on
  50. includes.
  51. 2017-08-11 Eric Bavier <bavier@member.fsf.org>
  52. build: Move modules out of "modules" directory.
  53. * Makefile.am (MODULES): Remove "modules" prefix.
  54. (JOY_MODULES): ditto.
  55. * modules/joy: Move directory to lib/joy.
  56. * modules/language: Move to top_srcdir.
  57. 2017-08-11 Eric Bavier <bavier@member.fsf.org>
  58. tests: Use atconfig and atlocal.
  59. Previously 'testsuite' was not locating atconfig or atlocal, so we
  60. needed excessive variable exports.
  61. * configure.ac (AC_CONFIG_TESTDIR): Pass 'scripts' for test PATH.
  62. * tests.am (check-local, installcheck-local): Do not pass JOY or GREP
  63. variables to testsuite. Tell testsuite to change to 'tests'
  64. directory.
  65. (tests/atconfig, tests/atlocal): New targets.
  66. * tests/atlocal.in: Use properly as autoconf input. Define 'GREP'.
  67. * tests/joy-base.at, tests/joy-forth.at: Use 'joy' directly, rather
  68. than through "$JOY". Provide -I flags.
  69. * tests/local.at (AT_COPYRIGHT): Add 2017.
  70. (AT_TESTED): Add 'joy'.
  71. 2017-08-09 Eric Bavier <bavier@member.fsf.org>
  72. build: Use Guile's macros for installation directories.
  73. * configure.ac (GUILE,GUILD): Use GUILE_PKG and GUILE_PROGS macros.
  74. (guilemoduledir,guileobjectdir): Define with GUILE_EFFECTIVE_VERSION.
  75. * Makefile.am: Put modules in guilemoduledir and objects in
  76. guileobjectdir.
  77. doc: Populate README.
  78. * README: Include short summary.
  79. * doc/joy.texi (Copyright): Update with 2017.
  80. 2017-08-08 Eric Bavier <bavier@member.fsf.org>
  81. tests: Forward -j flags to testsuite.
  82. * tests.am (check-local,installcheck-local): Pass on -j flag.
  83. joy: Correctly idenitfy not-strings.
  84. * module/language/joy/primitives.scm (string): Return 'false' for
  85. non-character-only lists.
  86. * tests/inicheck.joy (list!string, num!string): New tests.
  87. joy: Adjust tree-il for Guile 2.2.
  88. * module/language/joy/compile-tree-il.scm (call): New variable.
  89. (compile-expr): Use it.
  90. Remove stray file.
  91. * module/language/joy/load.scm: Delete file.
  92. doc: Summarize Joy and document 'def'.
  93. * doc/joy.texi (Programming in Joy): New chapter.
  94. (Primitives)[def]: New definition.
  95. 2017-08-08 Eric Bavier <bavier@member.fsf.org>
  96. doc: Document '.' as an operator.
  97. * doc/joy.texi (Interactive Joy): Remove '.' from example input.
  98. (API Reference): ditto.
  99. (Primitives)[infra]: ditto.
  100. [write,.]: New primitive documentation.
  101. * module/language/joy/parser.scm (get-quote): Fix typo.
  102. 2016-03-11 Eric Bavier <bavier@member.fsf.org>
  103. repl: Do not use non-existent module.
  104. * module/language/joy-repl/spec.scm [modules]: Remove compile-scheme
  105. module.
  106. 2016-03-08 Eric Bavier <bavier@member.fsf.org>
  107. joy: Properly error on unknown file.
  108. * scripts/joy.in (compile-and-run): Properly exit with an error status
  109. if the given file could not be found.
  110. joy: Forth aliases.
  111. * module/joy/forth.joy: New file.
  112. * Makefile.am (JOY_MODULES): Add it.
  113. * doc/joy.texi (Forth Aliases): Document new aliases.
  114. * tests/joy-forth.at, tests/test-forth.joy: New files.
  115. * tests/testsuite.at: Include .at file.
  116. * tests.am (TEST_MODULES): Add it.
  117. (TEST_JOYS): New variable.
  118. (EXTRA_DIST): Distribute TEST_MODULES and TEST_JOYS.
  119. 2016-03-08 Eric Bavier <bavier@member.fsf.org>
  120. joy: Remove semantic meaning of `.' and definitions.
  121. * scripts/joy.in (print-joy): Move procedure to...
  122. * module/language/joy/write.scm (write-joy): here. New file.
  123. * Makefile.am (MODULES): Add it.
  124. * module/language/joy/lexer.scm (lex): Remove special treatment of `.'
  125. Explicitely mark newlines.
  126. * module/language/joy/parser.scm (lex-buffer): New procedure.
  127. Simplify parsing logic with lex-buffer; Delimit expressions based on
  128. newlines as requested.
  129. * module/language/joy/primitives.scm (write, .): New procedures.
  130. (string): Fix in response to strings-as-lists.
  131. * module/language/joy/compile-tree-il.scm: Adjust to simplified parsing.
  132. * module/language/joy/spec.scm (joy): Use new parse-joy.
  133. * module/language/joy-repl/spec.scm (joy-repl): Use new parse-joy*.
  134. * tests/inicheck.joy: Replace "display" usage with "putchars". Remove
  135. unnecessary `.'s.
  136. * tests/test-base.joy: Ditto.
  137. * module/joy/base.joy (flip3, flip4): Fix definitions.
  138. (drop, take): Rename to...
  139. (list-tail, list-head): respectively.
  140. (at): Adjust accordingly. Adjust callees.
  141. 2016-03-04 Eric Bavier <bavier@member.fsf.org>
  142. joy: Add 'def' primitive.
  143. * module/language/joy/primitives.scm (def): New variable.
  144. * module/language/joy/eval.scm: Adjust comment.
  145. 2016-03-03 Eric Bavier <bavier@member.fsf.org>
  146. repl: Disable value history.
  147. * scripts/joy.in [main]: Set repl 'value-history option to #f.
  148. * doc/joy.texi (Interactive Joy): Adjust example.
  149. repl: pretty-print results.
  150. * scripts/joy.in (print-joy): New procedure.
  151. [main]: Use it for the REPL's printer.
  152. * doc/joy.texi (Interactive Joy): Adjust examples.
  153. build: include spec.scm in MODULES.
  154. * Makefile.am (MODULES): Add module/language/joy/spec.scm.
  155. compiler: Make every expression an operator.
  156. * module/language/joy-repl/spec.scm: New file.
  157. * Makefile.am (MODULES): Add it.
  158. * module/language/joy/compile-tree-il.scm: Use parse-tree-il everywhere.
  159. (compile-definition): Put definitions in toplevel (joy) module.
  160. (compile-expr): Create procedures with a free variable for input
  161. stack.
  162. (compile-tree-il*): New procedure.
  163. * module/language/joy/eval.scm (eval): Lookup definitions in (joy).
  164. * module/language/joy/primitives.scm (include): Apply compiled include
  165. to input stack.
  166. * scripts/joy.in (compile-and-run): New 'args' parameter.
  167. [main]: start repl in 'joy-repl language.
  168. * doc/joy.texi (Interactive Joy): New chapter.
  169. 2016-02-29 Eric Bavier <bavier@member.fsf.org>
  170. joy: Support strings as "aggregates".
  171. * module/language/joy/compile-tree-il.scm (compile-factor): Compile
  172. strings to lists of characters.
  173. (compile-term): Simplify by compiling to list constants.
  174. * module/language/joy/primitives.scm (putchars, include): Adjust
  175. accordingly.
  176. Initial commit.