lua-http v0.4 released

Heads up to everyone, I made a small release of lua-http yesterday.

lua-http is a library that hopes to provide all HTTP operations you should ever need. In addition to all the low-level parsing and serialising operations you might expect, lua-http provides high level interfaces for writing your own HTTP server or performing HTTP requests.

This was a minor release 2 years on from 0.3 that fixes a few easy bugs and improves Lua 5.4 support. Notable inclusions in this release:

  • Support multiple elliptic curves under OpenSSL 1.1.1+ (#150)
  • Improve support for Lua 5.4 (not longer require bit library to be installed) (#180)
  • Ignore delayed RST_STREAM frames in HTTP 2 (#145)

Links:

luacov-reporter-lcov

Today I was looking into using gitlab-ci for various projects instead of my current default choice of travis-ci. This doesn’t require a complete move to gitlab anymore: they support CI for github hosted projects! (See GitLab 10.6 release annoucement)

However moving away from travis-ci also looses me low effort integration with coveralls.io. Investigating alternatives, I found that gitlab have a post on hosting your project coverage using GitLab itself. To do this I need a luacov html report generator. I was able to find a couple of options (e.g. luacov-multiple), but I wasn’t happy with the quality of the web page created.

I’m mildly familiar with the lcov tool for coverage of C code, so I figured that I’d see if I can use it for coverage of Lua code too. Happily, the format that lcov uses is quite simple (see man geninfo) and it was simple to create a luacov reporter that outputs lcov compatible tracefiles. Using lcov has the additional benefit that coverage of a mixed language project is easy.

I published my code here and have uploaded it to luarocks.

Fengari v0.1.0 released

After much work, I’ve finally tagged the first release of Fengari. Fengari 0.1.0 is now available for download from github and npm.

What is Fengari?

It’s the Lua VM ported to JavaScript, but reusing JavaScript’s garbage collector.

Why should you care?

  • With fengari-web you can start using Lua to write front-end code for websites instead of Javascript
  • Calling between Lua and Javascript is easy! Mix Lua and Javascript code
  • You can take advantage of the whole JavaScript ecosystem, including:
    • Mobile app development toolkits
    • Electron applications
    • Game engines scriptable in JS
  • You can create new lua_States client side for running sandboxed user code Include working code samples in your Lua docs/tutorials!

More info can be found on the project website: https://fengari.io/ The website also has a REPL right there on the page, give it a go :)

luatz v0.4 released

I’m happy to announce a new release of luatz: 0.4 It’s a lua library to work with dates and times.

Features include:

  • A os.date compatible class “timetable” supporting normalisation
  • Conversion between locations (time zones) using your local zoneinfo database.
  • RFC-3339 parsing
  • Works with 5.1, 5.2, 5.3 and LuaJIT.

Included in this release:

  • Fix timetable normalisation carry bugs (#10, #13)
  • Clean up of docs
  • No longer throw errors in parse module on error (now return nil, err)
  • Support version 3 tzfiles

Links:

lua-http v0.2 released

I’m happy to announce the second release of lua-http.

lua-http is a library that hopes to provide all HTTP operations you should ever need. In addition to all the low-level parsing and serialising operations you might expect, lua-http provides high level interfaces for writing your own HTTP server or performing HTTP requests.

This is mostly a bugfix release. Included in this release:

  • Remove broken http.server .client_timeout option (replaced with .connection_setup_timeout)
  • Fix http1 pipelining locks
  • Miscellaneous http2 fixes
  • HTTP 2 streams no longer have to be used in order of creation
  • No longer raise decode errors in hpack module
  • Fix hpack:lookup_index() to treat static entries without values as empty string
  • Fix HTTP 1 client in locales with non-“.” decimal separator
  • Add h1_stream.max_header_lines property to prevent infinite list of headers
  • New .bind option for requests and http.client module

Links:

lua-psl v0.2 released

I’m happy to announce the second release of lua-psl.

lua-psl is a set of bindings to libpsl, a C library that handles the Public Suffix List (PSL). The PSL is a list of domains where there may be sub-domains outside of the administrator’s control. e.g. the administrator of ’.com’ does not manage ‘github.com’.

This list has found use in many internet technologies including:

  • preventing cross-domain cookie leakage
  • allowance of issuing wildcard TLS certificates

This release includes:

  • Fix crash when trying to load a psl file under lua 5.1
  • Set __name in metatable in lua 5.1 (fixes broken test)
  • Bind new functions in libpsl 0.16 (.dist_filename and .latest)

Links:

Enjoy!

mmdblua v0.1 released

I’m happy to announce the first release of mmdblua.

mmdblua is a lua library to read MaxMind’s Geolocation database format. This database is the most common source of Geo-IP data; you’ll probably want to download a database from Maxmind.

The mmdblua library was something I originally wrote back during the 2013 lua workshop as a quick side project, but as I’ve recently found out there are quite a few people and projects using it. Recognising this, I did a bit of code cleanup and figured I should tag a release. I’m sorry but I haven’t had time to write documentation for the library yet, so it won’t be super friendly for new users.

Links:

lua-http v0.1 released

I’m happy to announce the first release of lua-http!

lua-http is a library that hopes to provide all HTTP operations you should ever need. In addition to all the low-level parsing and serialising operations you might expect, lua-http provides high level interfaces for writing your own HTTP server or performing HTTP requests. I’d endeavoured to make behaviour as configurable as possible yet have sensible defaults.

Features:

  • Support for HTTP versions 1, 1.1 and 2 (yes! HTTP/2 support)
  • Provides both client and server APIs
  • Friendly request API with sensible defaults for security
  • All operations are fully non-blocking and can be managed with cqueues
  • Support for WebSockets (client and server), including ping/pong, binary data transfer and TLS encryption.
  • Transport Layer Security (TLS) - lua-http supports HTTPS and WSS via luaossl.
  • luasocket compatibility API if you’re looking to use lua-http with older projects.

Check the manual to learn the API, or read through and run the samples in the ‘examples/’ directory in the source tree.

This release has been a long time in the making! For an unreleased library it already has over a hundred stars on Github, and has had contributions from 5 others. I’d like to give a special thanks to @RussellHaley, @ChickenNuggers, @leafo, @vavrusa and @torhve for being early users and providing feedback, as well as @wahern for dealing with all my cqueues and luaossl feature requests.

Links:

lua-psl v0.1 released

I’m happy to announce the first release of lua-psl.

lua-psl is a set of bindings to libpsl, a C library that handles the Public Suffix List (PSL). The PSL is a list of domains where there may be sub-domains outside of the administrator’s control. e.g. the administrator of ’.com’ does not manage ‘github.com’.

This list has found use in many internet technologies including: - preventing cross-domain cookie leakage - allowance of issuing wildcard TLS certificates

This release includes:

  • Bindings to all exposed libpsl 0.15 symbols
  • Documentation via pandoc

Links:

Enjoy!

github.com/lua

At the lua workshop this year I spoke about my efforts to convert the historical source code of lua into git form. Until now this history was private to the lua team.

I finally put the last pieces together and have now pushed the results to github.

It’s split into 4 repositories:

See my talk’s notes for more info: https://www.lua.org/wshop16/Daurnimator.pdf