Algernon Versions Save

Small self-contained pure-Go web server with Lua, Teal, Markdown, Ollama, HTTP/2, QUIC, Redis and PostgreSQL support

v1.16.0

2 months ago

New features

  • Add support for using AI/LLMs (Ollama) from Lua.
  • Add support for .prompt files that contains a content-type, a model name, a blank line and a prompt. See README.md for more information.
  • Make it possible to clear the AI cache with ClearCache().

Tutorials and example code

  • Add a simple tutorial (TUTORIAL.md).
  • Update the React jsonfile example.
  • Update the TODO list example to the latest version of React.
  • Update the React + JSX + database example.

Various

  • Make small changes to the built-in themes.
  • Minor changes to the alg2docker script.
  • Combine several build and run scripts related to docker.
  • Require Go 1.21 or later, mostly because of the QUIC dependency.
  • Update CI configuration.
  • Update the year in the license file.
  • Add the loopvar feature to the dockerfiles.
  • Use LABEL maintainer in the Dockerfiles.
  • Remove some unused code.
  • Update dependencies.

v1.15.5

5 months ago
  • Compile with Go 1.21.5 which has "security fixes to the go command, and the net/http and path/filepath packages, as well as bug fixes to the compiler, the go command, the runtime, and the crypto/rand, net, os, and syscall packages." See the Go issue tracker for more details.
  • Also display images when viewing a local Markdown document with algernon -m.
  • Fix a typo in the moonscript sample (thanks @testwill).
  • Minor improvements to the Makefile and to the form/registration example.
  • Update documentation, ref #141, (thanks for reporting @ptman).
  • Update dependencies.
  • Fix a test.

v1.15.4

7 months ago

Usability

  • Add a newline to the help output (thanks @arimal199).
  • Let the servedir Lua function check the given arguments.

Security updates

  • Compile with Go 1.21 + update the http2 dependency, ref CVE-2023-39325

Dependencies

Performance

  • Use the dkorunic/betteralign utility to align struct fields.
  • Enable profile-guided optimization (new feature in Go 1.21).

General

  • Improve the alg2docker and benchmark scripts.
  • Use the GOEXPERIMENT=loopvar feature.
  • Update the GitHub action for Homebrew.
  • Update CI configuration.
  • Require Go 1.20 or Go 1.21.
  • Build the release binaries with Go 1.21.

v1.15.3

9 months ago
  • Support Go 1.21 and drop support for Go 1.19 (thanks @stefanb).
  • Enable QUIC support for non-x86_64 macOS, like M1 and M2.
  • Fix an issue when building with -tags=trace, for benchmarking.
  • Update the welcome.sh script with regard to ulimit and sysctl kern.maxfiles detection.
  • Improve the --help output and the REPL help.
  • Let the style for the "Welcome" page be slightly more welcoming.
  • Improve the Makefile.
  • Some minor changes to the code.
  • Adjust the example server config.
  • Update dependencies.

v1.15.2

11 months ago
  • Remove a duplicate word from the README.md file (thanks Philipp Gillé / @philippgille).
  • Serve Algernon web applications (.alg files) from memory if /dev/shm is writable, ref #132 (thanks Dialga / @Dialga).
  • Switch from github.com/xyproto/env to github.com/xyproto/env/v2.
  • Serve .json files a tiny bit faster.
  • Update dependencies.

v1.15.1

1 year ago
  • Switch from blackfriday to gomarkdown/markdown.
  • Add a simple example that uses the markdown function.
  • Update the CI configuration.
  • Update dependencies.
  • Update documentation.

v1.15.0

1 year ago
  • Compile the release binaries with Go 1.20.4.
  • Add a close() function, ref #124 (thanks Malcolm Ke Win / @diyism).
  • Add a shell linter to the CI configuration, ref #120 (thanks Jan Macku / @jamacku).
  • Support reverse proxies, ref #131 (thanks Mohamed Abdel Maksoud / @mohamed--abdel-maksoud).
  • Look for handler.lua in parent directories, ref #95, #112 and #130 (thanks Giulio Lunati / @giuliolunati).
  • Add initial support for JWT tokens.
  • Use os and ioinstead of the deprecated ioutil package.
  • Use any instead of interface{}.
  • Use the new unix build constraint.
  • Use strings.ReplaceAll and bytes.ReplaceAll.
  • Use simpleredis/v2.
  • Use math.Round.
  • Add an ulimit check to the welcome.sh script that also works on macOS Ventura.
  • Format/lint the code with gofumpt, golint and staticcheck.
  • Use the betteralign tool, to improve struct field alignment.
  • Make the code debug/tracing/profiling features optional at compile time, using build tags.
  • Fix a typo in one of the examples.
  • Update the CI configuration.
  • Update dependencies.
  • Update documentation.

v1.14.0

1 year ago
  • Compile the release binaries with Go 1.19.
  • Improve the documentation (thanks Matt Mc / @tooolbox ).
  • Add support for Teal together with a Teal sample (thanks Matt Mc / @tooolbox).
  • Fix an issue with how Lua tables were pretty printed in the REPL.
  • Fix an issue with conversion from Lua tables to JSON, ref #107, #108 (thanks @linkerlin).
  • Fix an issue with the generated directory listing pages, where %2F would appear in the URL instead of /, ref #117.
  • Follow the advice of these utilities: go fmt, golint, staticcheck and to some extent fieldalignment.
  • Update dependencies.

v1.13.0

2 years ago
  • Add a flag for serving domains with CertMagic and Let's Encrypt
  • Add a flag for redirecting from HTTP to HTTPS
  • Use req.Context since CloseNotifier has been deprecated
  • Switch to Go 1.18
  • Switch from the MIT license to BSD-3
  • Fix double drawn frames around syntax highlighted code in Markdown documents
  • URL encode links when listing directories
  • Use the same directory as the pongo2 template when importing macros, ref #84
  • Let plugins continue to run if an optional argument is passed in, ref #64 (otherwise close them)
  • Switch from jvatic/goja-babel to wvanw/esbuild, ref #77 (#91)
  • Improve JSX-related error messages
  • Use yuin/gopher-lua and yuin/gluamapper
  • Use a context when running Lua functions and use the background context when creating the Lua pool
  • Update the alg2docker and benchmark scripts
  • Update the --help output
  • Fix a typo in the "single.alg" example Algernon application
  • Update example service and Dockerfiles
  • Add a base URL flag for the directory listing (#90 ?)
  • Follow the advice of the "fieldalignment" and "staticcheck" utilies
  • Fix the serve2 function so that the registration form example works
  • Update tests, dependencies, examples and documentation

1.12.14

2 years ago

Changes from last release

  • Fix a typo in the documentation (thanks Felix Yan)
  • Add support for simple MSSQL queries, ref #57
  • Improve MSSQL support (thanks Matt Mc)
  • Improvements to table mappings in Lua, including changes to gluamapper (thanks Matt Mc)
  • Support headers in buffered responses, ref #75 (thanks Matt Mc)
  • Improvements to the file upload functionality (thanks Matt Mc)
  • Various minor fixes and improvements (thanks Matt Mc)
  • Add three new repl commands: pwd, serverdir and serverfile
  • Add nicer help output for built-in commands to the repl
  • Add a ServerDir function for the server configuration Lua script
  • Fix wasm mimetype issue, ref #82
  • Fix the Babl plugin configuration after updating the Babl dependency
  • Various improvements to the samples and to the "Welcome" page
  • Follow the advice of go vet, golint and staticcheck
  • Support Go 1.16 and Go 1.17 only, for now
  • Downgrade fsnotify to v1.4.9 so that building with GOOS=freebsd works again
  • Update CI configuration
  • Update dependencies
  • Update documentation