diff --git a/CHANGELOG.md b/CHANGELOG.md index 63f004f..129da0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,26 @@ ## pre-v4.0.0 + * Fix unexpected crash during SSL tests: + https://github.com/elli-lib/elli/pull/91 + + * Do not spawn a new acceptor until after a successful TLS handhake: + https://github.com/elli-lib/elli/pull/90 + * Headers are now properly treated as case-insensitive - * Original headers that have not had `string:casefold/1` run on each header - name are still available in the request through `elli_request:original_headers` + Original headers that have not had `string:casefold/1` run on each header + name are still available in the request through `elli_request:original_headers`: + https://github.com/elli-lib/elli/pull/92 + + * Handle uncommon integer status codes (as per `elli:response_code/0`): + https://github.com/elli-lib/elli/pull/96 + + * In `elli_http` export `send_file/5` and `close_or_keepalive/2`: + https://github.com/elli-lib/elli/pull/98 ## v3.3.0 - * Do not use x-forwarded-for for peer #75 + * Do not use x-forwarded-for for peer #75 * Handle arguments with no value in (post|get)_arg_decoded #82 * Fix compile-time warnings on missing record info. from aleppo #81 diff --git a/LICENSE b/LICENSE index 40b68e0..c00c84a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ The MIT License Copyright (c) 2012-2016 Knut Nesheim -Copyright (c) 2016-2018 elli-lib team +Copyright (c) 2016-2021 elli-lib team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 32ffe90..b7b406a 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,8 @@ [erlang downloads]: http://www.erlang.org/downloads [doc badge]: https://img.shields.io/badge/docs-edown-green.svg [docs]: doc/README.md -[coveralls badge]: https://coveralls.io/repos/github/elli-lib/elli/badge.svg?branch=develop -[coveralls link]: https://coveralls.io/github/elli-lib/elli?branch=develop +[coveralls badge]: https://coveralls.io/repos/github/elli-lib/elli/badge.svg?branch=main +[coveralls link]: https://coveralls.io/github/elli-lib/elli?branch=main [license badge]: https://img.shields.io/badge/license-MIT-blue.svg Elli is a webserver you can run inside your Erlang application to @@ -27,7 +27,7 @@ webserver, `elli` might be for you. If you're building web services, not web sites, then `elli` might be for you. Elli is used in production at Wooga and Game Analytics. Elli requires -OTP 18.0 or newer. +OTP 20.0 or newer. ## Installation @@ -40,7 +40,7 @@ Add `elli` to your application by adding it as a dependency to your ```erlang {deps, [ %% ... - {elli, "3.0.0"} + {elli, "4.0.0"} ]}. ``` diff --git a/doc/.editorconfig b/doc/.editorconfig new file mode 100644 index 0000000..4ee5664 --- /dev/null +++ b/doc/.editorconfig @@ -0,0 +1,10 @@ +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[Makefile] +indent_style = tab diff --git a/doc/Makefile b/doc/Makefile index 5d72b03..da351af 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -3,9 +3,9 @@ SOURCE_DOCS := $(wildcard *.md) EXPORTED_DOCS=\ $(SOURCE_DOCS:.md=.html) -RM=/bin/rm +RM ?= /bin/rm -f -PANDOC=pandoc +PANDOC ?= pandoc PANDOC_HTML_OPTIONS=--standalone --highlight-style=tango --template tpl.html -f gfm --to html5 @@ -18,4 +18,4 @@ PANDOC_HTML_OPTIONS=--standalone --highlight-style=tango --template tpl.html -f all : $(EXPORTED_DOCS) clean: - - $(RM) -f $(EXPORTED_DOCS) + - $(RM) $(EXPORTED_DOCS) diff --git a/doc/README.md b/doc/README.md index f206730..4466973 100644 --- a/doc/README.md +++ b/doc/README.md @@ -2,9 +2,9 @@ # elli # -Copyright (c) 2012-2016 Knut Nesheim, 2016-2018 elli-lib team +Copyright (c) 2012-2016 Knut Nesheim, 2016-2021 elli-lib team -__Version:__ 3.0.0 +__Version:__ 4.0.0 __Authors:__ Knut Nesheim, elli-lib team. diff --git a/doc/build.sh b/doc/build.sh index 188a5ee..2a9094e 100755 --- a/doc/build.sh +++ b/doc/build.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! /usr/bin/env bash cd $(dirname $(realpath $0)) @@ -7,7 +7,7 @@ make # fix internal doc links sed -i 's/https:\/\/github\.com\/doc\/\([a-zA-Z_-]*\)\.md/\1.html/g' *.html -sed -i 's/\"\([a-zA-Z_-]*\)\.md\([a-zA-Z_-#]*\)\"/\"\1.html\2\"/g' *.html +sed -i 's/\"\([a-zA-Z_-]*\)\.md\([a-zA-Z#_-]*\)\"/\"\1.html\2\"/g' *.html sed -i 's/\"doc\/\([a-zA-Z_-]*\)\.md\"/\"\1.html\"/g' *.html sed -i 's/\"\([a-zA-Z_-]*\)\.md\"/\"\1.html\"/g' *.html diff --git a/doc/index.md b/doc/index.md index 2f1d9e6..6011fb7 100644 --- a/doc/index.md +++ b/doc/index.md @@ -3,25 +3,23 @@ [![Hex.pm][hex badge]][hex package] [![Documentation][doc badge]][docs] [![Erlang][erlang badge]][erlang downloads] -[![Travis CI][travis badge]][travis builds] +![Common Test](https://github.com/elli-lib/elli/workflows/Common%20Test/badge.svg) [![Coverage Status][coveralls badge]][coveralls link] [![MIT License][license badge]](LICENSE) -[travis builds]: https://travis-ci.org/elli-lib/elli -[travis badge]: https://travis-ci.org/elli-lib/elli.svg [hex badge]: https://img.shields.io/hexpm/v/elli.svg [hex package]: https://hex.pm/packages/elli [latest release]: https://github.com/elli-lib/elli/releases/latest -[erlang badge]: https://img.shields.io/badge/erlang-%E2%89%A518.0-red.svg +[erlang badge]: https://img.shields.io/badge/erlang-%E2%89%A520.0-red.svg [erlang downloads]: http://www.erlang.org/downloads [doc badge]: https://img.shields.io/badge/docs-edown-green.svg [docs]: doc/README.md -[coveralls badge]: https://coveralls.io/repos/github/elli-lib/elli/badge.svg?branch=develop -[coveralls link]: https://coveralls.io/github/elli-lib/elli?branch=develop +[coveralls badge]: https://coveralls.io/repos/github/elli-lib/elli/badge.svg?branch=main +[coveralls link]: https://coveralls.io/github/elli-lib/elli?branch=main [license badge]: https://img.shields.io/badge/license-MIT-blue.svg Elli is a webserver you can run inside your Erlang application to -expose an HTTP API. Elli is a aimed exclusively at building +expose an HTTP API. Elli is aimed exclusively at building high-throughput, low-latency HTTP APIs. If robustness and performance is more important than general purpose features, then `elli` might be for you. If you find yourself digging into the implementation of a @@ -29,7 +27,7 @@ webserver, `elli` might be for you. If you're building web services, not web sites, then `elli` might be for you. Elli is used in production at Wooga and Game Analytics. Elli requires -OTP 18.0 or newer. +OTP 20.0 or newer. ## Installation @@ -40,7 +38,10 @@ Add `elli` to your application by adding it as a dependency to your [`rebar.config`](http://www.rebar3.org/docs/configuration): ```erlang -{deps, [elli]}. +{deps, [ + %% ... + {elli, "4.0.0"} +]}. ``` Afterwards you can run: @@ -302,4 +303,4 @@ about benchmarking HTTP servers. Elli is licensed under [The MIT License](LICENSE). -Copyright (c) 2012-2016 Knut Nesheim, 2016-2018 elli-lib team +Copyright (c) 2012-2016 Knut Nesheim, 2016-2021 elli-lib team diff --git a/doc/overview.edoc b/doc/overview.edoc index be8cd8c..461ecfa 100644 --- a/doc/overview.edoc +++ b/doc/overview.edoc @@ -1,7 +1,7 @@ @author Knut Nesheim @author elli-lib team -@copyright 2012-2016 Knut Nesheim, 2016-2018 elli-lib team -@version 3.0.0 +@copyright 2012-2016 Knut Nesheim, 2016-2021 elli-lib team +@version 4.0.0 @title elli @doc Erlang web server for HTTP APIs diff --git a/src/elli.app.src b/src/elli.app.src index f3dee87..5c8cd4e 100644 --- a/src/elli.app.src +++ b/src/elli.app.src @@ -1,7 +1,7 @@ {application, elli, [ {description, "Erlang web server for HTTP APIs"}, - {vsn, "3.3.0"}, + {vsn, "4.0.0"}, {modules, [ elli, elli_example_callback,