2024-10-09
Following shortly after the release of Teal 0.24.0 - _Teal Spring '24_™. Functionality is mostly the same, but some internal api changes have been made.
Changes:
- Teal 0.24.0 is required
- The
module_name
feature has been removed. This was a hack to get around a small inconvenience and was not widely used. - The autogenerated API docs have a little more styling to them
API Changes:
cyan.ansi
has been removedColorString
has been replaced with a more genericdecoration
api. ColorString was very explicitly built around ANSI terminal escape sequences whereas this new decoration api is more generic to support more ways of decorating text in the future- The wrapper apis in
cyan.tlcommon
now use the correcttl.Node
andtl.Token
types because they are now exposed - Arity annotations have been added
- Add
Path:extension_split
(Same asfs.extension_split
, but a method onPath
)
Developer Things:
- Tests are now written in Teal
- The luarocks and lua github actions have been updated
- A build script has been added to fetch type dependencies from the tl-types repo
- A tree-sitter powered linting script has been added to catch some code style differences
2024-07-04
Just some minor changes.
Fixes:
- The
--quiet
flag actually does something now instead of the previous nothing. - We now change directory before trying to load the config file. Allowing cyan to actually be run in a subdirectory.
API Features:
- A new user interaction module has been added
cyan.interaction
. The only function in it so far isyes_no_prompt
. ColorString.copy
method addedlog.Logger.copy
method addedutil.peek
iterator addedutil.tab.ensure_scalar_array
addedtlcommon.syntax_highlight
function exposed
Developer Things:
- Github action dependencies have been updated
- A new tree-sitter powered linting script has been added to catch some simple style differences
- The tl dependency in the rockspec has now been limited to
~> 15
since the changes in the next branch are breaking and we unsafely wrap them without typechecking
2023-02-01
Closely following Teal's 0.15.0 release, changes in both the tl
api and cyan
apis warrant a new release.
CLI Features:
- build: let the
--prune
option delete empty directories - tlconfig: add
dont_prune
option Certain teal applications will commit things to the build directory to make shipping things easier, but the warning about unexpected files in the build directory is annoying for this use case and the--prune
option itself was more cumbersome since it would delete the wanted files. This new option allows for this use case. - warning errors and regular errors will now be reported together rather than only reporting warning errors
API Features:
- loggers are now callable tables rather than just functions and have more fine grained control over when newlines and continuations are emitted. See the commit 69fae786 for details, or the generated documentation.
API Documentation:
- "private" fields (i.e. fields that start with an underscore) are shown in documentation (under a
<details>
tag) - The color scheme of the documentation is now better. (When I originally made it, my dark reader extension was warping my view of the colors. This is now fixed)
- Many minor internal changes to how the docs are generated. Such as using an html template rather than generating everything with a script
- Some aesthetic changes to how docs are presented
Fixes:
- build: Don't write lua files when
source_dir
==build_dir
Since generated lua will erase things like comments, this could be very cumbersome. - build+gen: add a newline to the end of generated files
To line up with the behavior of
tl
tlcommon.report_result
will no longer short circuit when reporting warning errors and type errorstlcommon
accomodates the changes to the tl apiutil.tab.merge_list
did not return the correct table and would just return the first argument- ci: deduplicate running ci on pull requests from inside the repo
tlcommon.report_result
ignored syntax errors and the documentation lied about it, so syntax errors in scripts are now properly reported
2022-08-21
Closely following the tl
0.14.0 release, cyan
has been accumulating enough features to warrant a new release.
CLI Features:
- from
tl
add the--global-env-def
flag build
will now detect circular dependenciescyan
will no longer print ANSI escape codes when not running in a tty or when$NO_COLOR
is definedbuild --check-only
does a dry-run of the build, doing everything up to lua file generation--verbosity
flag for loggingbuild
will now warn when there are unexpected files in the build directorybuild --prune
will remove any unexpected files that are detected in the build directory- changed how scripts are loaded via
tlconfig.lua
. This is a breaking change, see the documentation for details - added
build --source-dir
andbuild --build-dir
fromtl build
- lua files from the source directory are now copied to the build directory
tlconfig.lua
is excluded from this when the source directory is the root of the project- support for lua 5.4 features in
tl
, used via the--gen-target 5.4
flag
API Features:
fs.path
: now allows paths to be relative (i.e. they can contain..
)- add
fs.copy
: reads the contents of a file and writes it to another file - add
fs.Path:to_absolute()
sandbox
: now allows passing arguments to the given function
Fixes:
--werror all
and--wdisable all
actually work properly nowbuild
,check
, andgen
will now stop when a teal environment can not be properly initialized- the
log
module used to wrongly assume some input would always be a string integer
support in teal means we basically never usenumber
anywhere- syntax errors from invalid tokens are now properly reported
- the
cyan.config
module now actually sets theloaded_from
field
2021-06-28
First release!
Main features:
- Incremental
build
command - Nicely formatted error messages
- Programmatic api for loading
tlconfig.lua
for other tools to consume - Drop in replacement for
tl