Releases: xyproto/algernon
Releases · xyproto/algernon
Algernon 1.17.1
Platform compatibility
- Patch the
pingcap/tidb
dependency so that Algernon still compiles for ARM 6 and ARM 7.
Ollama / LLMs
- Add the
oc:distance()
Lua method for finding the distance between two LLM prompts. - Let the
embeddedDistance
Lua function take a 3rd argument:euclidean
,manhattan
,chebyshev
,hamming
orcosine
. - Improve the image description example.
Markdown
- Improve how images are served when serving a single Markdown document.
- Fix the double opening of the browser when both
-m
and-o
are specified.
Various
- Also cache
.webp
images, if caching of images is enabled. - Update dependencies.
- Update documentation.
Algernon 1.17.0
- Add three new Ollama-related functions:
base64EncodeFile
(base64-encode a given file),describeImage
(use Ollama and ie. the llava-llama3 model to describe a base64-encoded image) andembeddedDistance
(given two embeddings, try to find how similar they are). - Serve HTTP with
fasthttp
(ref #4, thanks for the feature request @iMaxopoly) - Add a
sanhtml
function for sanitizing HTML. - Add experimental support for mathematical formulas in Markdown using MathJax (ref #150, thanks for the feature request @xjl456852).
- Add an example for uploading and describing images with Ollama and the
llava-llama3
model. - Add an example that renders mathematical formulas.
- Fix an issue with inserting JS into HTML.
- Improve the "pretty error page" that appears if there is an error in a Lua script.
- Make it possible to ignore files in a directory listing (ref #149, thanks for the feature request @alpharde).
- Improve how favicons are handled.
- Add a
base64
method toUploadedFile
objects. - Try avoiding
runtime.GOOS
and detect most features at compile time instead. - Use two
atomic.Bool
variables instead of a mutex for keeping track of how traffic is being served. - Use
github.com/pkg/browser
for opening URLs in a browser. - Import
logrus
as "logrus" instead of as "log". - Use
strconv.FormatInt
instead offmt.Sprintf
whenever possible. - Update the Teal example.
- Follow the advice of
golint
. - Let some variables be constants instead.
- Remove
GOEXPERIMENT=loopvar
since it is no longer needed. - Compile the release binaries with Go 1.22.4.
- Update documentation.
- Update dependencies.
Algernon 1.16.0
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. SeeREADME.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.
Algernon 1.15.5
- 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.
Algernon 1.15.4
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
- Use the
orsinium-labs/enum
package for an enum inlogo_unix.go
. - Remove deprecated
bmizerany/assert
. - Update all 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.
Algernon 1.15.3
- 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 toulimit
andsysctl 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.
Algernon 1.15.2
- 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
togithub.com/xyproto/env/v2
. - Serve
.json
files a tiny bit faster. - Update dependencies.
Algernon 1.15.1
- Switch from
blackfriday
togomarkdown/markdown
. - Add a simple example that uses the
markdown
function. - Update the CI configuration.
- Update dependencies.
- Update documentation.
Algernon 1.15.0
- 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
andio
instead of the deprecatedioutil
package. - Use
any
instead ofinterface{}
. - Use the new
unix
build constraint. - Use
strings.ReplaceAll
andbytes.ReplaceAll
. - Use
simpleredis/v2
. - Use
math.Round
. - Add an
ulimit
check to thewelcome.sh
script that also works on macOS Ventura. - Format/lint the code with
gofumpt
,golint
andstaticcheck
. - 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.
Algernon 1.14.0
- 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 extentfieldalignment
. - Update dependencies.