Changelog
5.0.4
Oct 11, 2018
Security patch
please upgrade if you are serving static files with router::serve_files()
- The file serving convenience methods would gleefully serve up your entire filesystem, whether you liked it or not. This has been fixed.
5.0.3
Jun 5, 2018
- Fixed a problem when Luna would just flat-out crash when trying to determine the content-type for an unknown file extension.
5.0.2
May 29, 2018
- Minor update to logging functions that uses the provided server name, instead of hard coding “Luna”. Just in case.
5.0.1
Apr 20, 2018
- Fixed a bug whereby some otherwise valid basic auth headers were being rejected. Stupid regexes.
5.0.0
Mar 21, 2018
- Oh, wow, now you can get Luna as a pre-built library!
- Changed up the way you construct
router
objects so that it is impossible to forget to add them into a server
object.
With huge thanks to samielhini, pvicente, uilianries, and the Conan team generally for their help in getting this build working.
4.0.1
Feb 7, 2018
- So, there were some small bugs that prevented compilation on some platforms. No longer.
- Also, I seem to have forgottent to close some quotes in a string or two. Nothing more than grammatical issues in English, thankfully
4.0.0
Oct 29, 2017
Holy shit, here’s some breaking changes for you.
There’s a lot going on in the API whose use is just questionable at best, so some cruft has been removed:
- Removed all existing middleware
- Removed all existing error handling callbacks
- Removed the ability to remove request handlers (because, really, why is that necessary?)
- All request handling has been moved to a new
router
class for increased flexibility.
We’ve also added a project template in examples/project_template
that you can use as the basis for your own Luna-powered API.
3.3.0
Aug 24, 2017
- Now we can offer a little file cacheing of our own. It’s not as great as building your own cache, but it’s cheap and easy to do.
3.2.1
Aug 20, 2017
- Oh, what, poll isn’t working for some reason on Macs. Switched to using select as default. Performance is now much better. You can get poll behavior by using the
use_epoll_if_available
option.
- There’s been a good bit of behind-the-scenes work making things cleaner, more maintainable, and ready for some planned improvements.
3.2.0
Aug 12, 2017
- Tired of manually sending the same headers for every request? Now you can set global headers that will automatically be sent for each request.
3.1.1
Jul 23, 2017
- TIL that I am no good with POSIX IP address manipulation functions. I am deeply embarrassed that this has been so broken for so long, and I didn’t even know. So: Finally. Your damned log messages are logging the correct IP address!
3.1.0
Jul 21, 2017
- I suppose the changes to the logger are technically a breaking change. Now you get the server’s response too.
- Now, if you are serving files, and someone requests a directory, and you have an index.html, we serve that index.html automatically
- Mime types for CSS and JavaScript files were incorrectly deduced. Now they are mostly correctly deduced.
- Some minor internal fixes that you will never ever possibly notice, honestly. They are more for my peace of mind than anything.
3.0.0
Jul 7, 2017
- Because the 404 is the centerpiece of your brand, you can now more easily supply your own custom 404 pages, and other error pages too. 👷♀️
- The logging system was a logjam. A logjam on fire. A jam fire, if you will. Now it is less so. 🚒
- Added a mechanism to support optional in-memory cacheing of objects served from the disk. Done well, this can offer a 400% speed-up! Tried to make the interface as simple as possible to use. That said, cache invalidation is on you 😘
- Who knew, apparently we were not correctly handling IP address strings. Happens to the best! And also to us. 😳
- The examples provided are now cleaner, neater, clearer, and documented.
- More testing added to increase coverage. Decreased indeterminism in some of the tests.
- GCC 4.9 support is on its last legs, TBH.
- So, looking to the future, we fixed GCC 5 tests, and added GCC 6 tests, to ensure compatibility. Yes, it is compatible.
2.11.0
May 2, 2017
- Added ability to validate parameters prior to passing request on to request handler. Parameters passed in request that do not validate will automatically 401.
- Added ability to add middleware to Luna; new hooks exposed to allow running custom code upon request receipt, upon response creation, and upon response error.
2.10.1
Feb 1, 2017
- Bump to dependencies that should make absolutely no difference to how Luna operates. Should be effectively identical to previous version.
2.10.0
Jan 14, 2017
- Now request and response headers are treated as case-insensitive. Because they are supposed to.
- Luna now reports something about itself in response headers
2.9.0
Nov 22, 2016
luna::server::await()
is now the best way to wait for a server to stop.
- You can now choose not to start the server at construction time, instead calling
luna::server::start()
to start the server. Just pass luna::server::start_on_construction{false}
to the luna::server
constructor.
- You can now also choose to stop the server at will with
luna::server::stop()
.
2.8.0
Nov 13, 2016
- Now you can serve static assets directly from the filesystem.
2.7.1
Nov 5, 2016
- Fixing some crazy memory leak I found, but then I forgot what I fixed.
2.7.0
Nov 4, 2016
2.6.0
Oct 23, 2016
- Make it easier to return 401 responses
2.5.2
Oct 23, 2016
- more bugs found in base64, bump version used.
2.5.1
Oct 23, 2016
- I apparently just don’t pay enough attention to CMakeLists.txt
- Use a non-buggy version of libbase64
2.5.0
Oct 22, 2016
- Refactoring of luna::response constructors
- Support for Basic Auth
2.4.2
Oct 19, 2016
- Fix an error in CMakeLists.txt
2.4.1
Oct 19, 2016
- Fix a bug in the conanfile
2.4.0
Oct 18, 2016
- Support
epoll
on Linux
- Initial support for conan-ized libmicrohttpd
2.3.0
Sep 30, 2016
- Enable libmicrohttpd debug output
- Support using a thread per incoming connection
- Better support for multi-threading request handling
- Support OPTIONS verb
- Support response headers
- Support for GCC 4.9
2.2.0
Aug 29, 2016
2.1.0
Aug 12, 2016
- Now response handlers can be removed, if need be. Unsure what that need would be, but there it is.
2.0.0
Aug 12, 2016
- Request handlers are now passed a single
luna::request
object that contains the regex matches, query parameters, request headers, and request body.
1.1.0
Aug 8, 2016
- Do something smart when POST data contains JSON
1.0.1
Aug 8, 2016
- Fix a bug in the conanfile
1.0.0
Jul 11, 2016
- First public release
- Improved exception handling for endpoint handlers
- More tests and coverage!