Skip to content

Releases: CrowCpp/Crow

v1.3.0

13 Oct 14:50

Choose a tag to compare

What's Changed

  • Add unix domain socket support by @na-trium-144 in #803
    The most important change in this release is support for unix domain sockets as server sockets.

  • Adds SBOM generation using cmake-sbom by @StefanoPetrilli in #1066
    The CMake build scripts supports now the generation of an SBOM, there is a new CMake option CROW_GENERATE_SBOM for this.

A lot of outstanding small bugs was fixed, the most important are maybe these:

@StefanoPetrilli overhauled the GitHub CI scripts, we build now with Boost::asio, standalone asio, clang or gcc, libstdc++ or libc++.

A lot of other small fixes and improvements were done by the community of contributors:

New Contributors

Full Changelog: v1.2.1.2...v1.3.0

v1.2.1 (v1.2.1.2)

10 Feb 13:46

Choose a tag to compare

Note

v1.2.1.2 contains a bugfix for a problem with parallel HTTP requests.

What's Changed

This version of Crow needs at least C++ 17 compiler.

In addition there is an incompatible CMake option change,
starting with this version for enabling SSL is used:
CROW_ENABLE_SSL=ON
and for enabling compression:
CROW_ENABLE_COMPRESSION=ON

CI

Packaging

  • Add nixpkgs as distribution to docs by @fliiiix in #927
  • Added homebrew icon and installation instructions by @The-EDev in #932
  • add debian package building and upload to releases by @gittiver in #893

Bugfixes

  • fixed warnings in mkdocs documentation generation by @gittiver in #820
  • Improved crow/mustache.h file documentation by @8nvHHobXJ1KS in #817
  • #839 Make multipart::message constructor from request explicit by @bgs99 in #842
  • Fix wait of conditional variable to prevent spurious wakeup by @z16166 in #851
  • Add gzip mime type by @summer-espresso in #857
  • Make websocket close include the status code by @davidot in #854
  • Fix 828 nested blueprints need static directory by @gittiver in #855
  • Make Crow::port getter const by @bugdea1er in #863
  • Multipart message view by @bgs99 in #862
  • List all amalgamated headers manually by @bgs99 in #871
  • Bugfix/cleanup whitespace by @fliiiix in #881
  • Add const qualifier to rvalue lo method by @t-cadet in #892
  • Update home.html by @jtlsc-net in #898
  • #692 Add the possibility to specify "Sec-WebSocket-Protocol" by @KaSSaaaa in #693
  • Return correct port if dynamic port allocation is used by @sandro97git in #901
  • Makes task_timer generic by @StefanoPetrilli in #897
  • Enable -Wshadow warnings by @fliiiix in #902
  • changes sleep times and default timeout raised by @gittiver in #905
  • Logging the missed key when accessing rvalue through operator[] by @faywong in #906
  • made count method const and removed superfluous ; by @gittiver in #909
  • Do not compress when body is empty by @paulharris in #921
  • Tell Router to use https for the protocol, when enabled. by @paulharris in #922
  • "crow::multipart::message throws when the boundary is empty or malformed by @Iuliean in #931
  • fix failing task timer tests on OSX by @gittiver in #949
  • Redirect to url with trailing slash, WITHOUT the protocol and host. by @paulharris in #945
  • Use references explicitly, and avoid dangling references captured by complete_request_handler_ by @paulharris in #924
  • added page with templates and crow applications to mkdocs by @gittiver in #950
  • Check start tags were matched to an end tag by @paulharris in #923
  • Fixed CMP0167 CMake warning by @bg-softcom in #964
  • Remove CROW_CAN_USE_CPP14 and CROW_CAN_USE_CPP17 macros by @bugdea1er in #969
  • Remove usage of deprecated Asio API by @bugdea1er in #971
  • Mustache: fix segmentation fault for unexpected closing tag by @tyler92 in #977
  • Add an option to expose headers for CORS by @bugdea1er in #978
  • Credential is not supported if Allowed Origin is '*' by @bugdea1er in #979
  • Possibility to mirror Sec-WebSocket-Protocols by @andrew-guz in #980
  • added wait timeout to server start by @gittiver in #918
  • Changed headers handling by @TiARETiK in #799
  • replaced not reliable sleep by a asio::waitable_timer (steady_timer) … by @gittiver in #976
  • Update testing documentation to use correct function by @fliiiix in #988
  • replaced += by append and changed the order of strings to remove nece… by @gittiver in #974
  • Refactor substr equals by find by @gittiver in #975
  • added testcase for requested samples from issue by @gittiver in #991
  • Fixed handling of origin when allow_credentials enabled by @TiARETiK in #985
  • switch return code of OPTIONS request method between 200 and 204 depending on cmake option by @gittiver in #951
  • fixed header length calculation in unittest by @gittiver in #995
  • a hotfix to ssl test which depends also on the length of crow version… by @gittiver in #996

New Contributors

Full Changelog: v1.2.0...v1.2.1.2

v1.2.0

28 May 20:54

Choose a tag to compare

What's Changed

The release contains some fixes related to web sockets, a lot of small fixes and documentation improvements.

New Contributors

Full Changelog: v1.1.0...v1.2.0

v1.1.0

23 Jan 19:16

Choose a tag to compare

After a long time this is the first new release, in the last year the team and all the (new) contributors fixed a lot of bugs.
Core does now only depend on standalone Casio library instead of the big boost dependencies. :)

Thanks to the The E-Dev, the Crow team and all the new contributors.

What's Changed

Read more

v1.0+5 Security Patch

24 Aug 09:42
edf12f6

Choose a tag to compare

Thanks to hebi and Gynvael Coldwind for discovering and reporting the vulnerabilities.

v1.0+4 Security Patch

28 Jun 14:19
62dae4c

Choose a tag to compare

  • Bug Fixed issue where an index in qs_parse is incorrectly incremented beyond the maximum possible value. #486

v1.0+3 Hotfix

07 May 10:02
25dc741

Choose a tag to compare

  • Bug Fixed multiple definition error for CORS middleware. @dranikpg #395

v1.0+2 QoL Hotfix

29 Apr 00:41
bc3a742

Choose a tag to compare

  • Bug Fixed issue where Crow would not Compile on GCC 4.8 (due to a G++ bug). #399
  • Bug Fixed exception when Crow doesn't know the extension of a static file. @danielskeenan #411
  • Bug Fixed issue where Crow wouldn't compile when using CROW_MIDDLEWARES with a pass-by-reference app. #396
  • Feature Allow using absolute file paths with static folders. @joelguittet #419
  • Bug Fixed issue where SSL websockets wouldn't run due to HTTP upgrade. @jeanbiber #393
  • Bug Fixed issue where Logs from multiple threads would be merged together. @dhchen #404
  • Bug Fixed issue where responses to OPTIONS requests were missing a Content-Length header. @jeanbiber #424
  • Feature Allow setting up HTTPS using SSL chain files. @jeanbiber #424
  • Doxygen can now document SSL and Compression parts. #424
  • Typo fixes. @stephanecharette #424

v1.0+1 Hotfix

30 Mar 15:44
4d2f26e

Choose a tag to compare

  • Bug Fixed issue where Crow wouldn't compile on GCC versions below 6.0. @sgoth #377

v1.0 Taking Flight

29 Mar 12:05
e7007b1

Choose a tag to compare

With this release, Crow is production ready. I'm amazed and thankful for how far this project has come and I would like to thank everyone who contributed their time, skills, and money to move this project forward.

A special thanks to Crow's newest member, @luca-schlecker. Without his work, much of this release wouldn't be possible.

Packages / Dependencies

  • Proper CMake support (Crow is now a CMake target (library) as opposed to just using CMake to compile examples/tests). #228 #209 #218 #241
  • Change Crow CMake dependencies based on downstream project requirements. @Leon0402 #231
  • CMake install support. #228 #209 #218
  • Crow can now be compiled using C++20. @Leon0402 #265
  • Automated release process via release script. #162 #205 #228 #252
  • CMake uninstall support. @navidcity #305
  • Fixed local VCPKG manifest version. #207
  • Fixed vcpkg.json to work on linux. @Borwe #330
  • Added Crow license to crow_all.h. #165

Framework

  • Feature Allowed multiple source files for projects using Crow without the need for #define CROW_MAIN. #280 #186 @danielytics #192 @nekoffski #354
  • Feature Added a type of middleware that runs per route rather than globally. @dranikpg #327
  • Feature Replaced dumb_timer_queue with new task_timer. #278
  • Feature Replaced the round robin approach to assigning connections to threads to a load balancing system. @belugum #289
  • Feature Improved and optimize filename sanitization function. @neumannt #321
  • Feature Added Middleware to handle CORS rules. @dranikpg #348
  • Bug fixed issue where absolute unix paths were not sanitized. #334
  • Feature Added function to run the Crow app asynchronously. #359
  • Feature Added unsafe file loading functions. @zefrenchy #339
  • Feature Added Base64 decoder. #260 @neumannt #324
  • Feature Added function to get the port Crow is using. @nx10 #276
  • Bug Worked around GCC 8.3 bug that prevented Crow from compiling. @nx10 @CircuitCoder #287
  • Feature Updated Crow's thread count process to reflect the actual number of threads being used. #307

Websockets

  • Bug Fixed Issue where Crow assumes a single masked message means all other messages are masked as well. #282
  • Feature Enforce Websocket protocol (opt-in). #282
  • Feature Added functionality to get the remote IP address connected to the Websocket. #263

HTTP

  • Feature Implemented Blueprints for project organization (similar to Flask's Blueprints). #181 #205 #208 #242
  • Feature Upgraded, better integrated, and optimized the HTTP Parser Crow uses. #294 @navidcity #303 #349 @nekoffski #354 #371
  • Feature Re-implemented the Trie crow uses to match rules with URLs. #166
  • Bug Fixed problem where streaming a response would abruptly close the connection. #332
  • Feature Crow now uses an enum for HTTP status codes (200 or status::OK can be used). #230
  • Feature Added several HTTP status codes. @Zhavok92 #227 @kingster #367
  • Bug Fixed issue where enabling SSL but not using it caused incorrect redirects. #281
  • Feature Added app option to set threshold beyond which Crow streams a response. #245
  • Feature Catch-all Routes now have receive the error code in their response object. #205
  • Bug API Breaking Modified Parser to only allow GET method on HTTP/0.9. #262
  • Bug Fixed problem where static file info wasn't being cleared if no file was found. #338
  • Feature Added Automatic UTF-8 support through a middleware. #202
  • Feature Added content type constructor for response. @hg333 #212
  • Bug Replaced HTTPMethod::GET with HTTPMethod::Get in routing.h. @d35ha #191
  • Feature Recognized cleartext and SSL versions of HTTP/2 upgrade header. #332
  • API Breaking Fixed incorrect styling in for remote_ip_address. @himanshu007-creator #200

Multipart

  • Feature API Breaking Part headers are now in a map rather than a vector. #358
  • Feature Added function to get a part by name. #358
  • Bug Fixed a problem where Crow failed to parse a multipart request made using .Net HttpClient. #332
  • Feature API Breaking Added a boundary to the default content-type (gets set to the request's boundary if constructed from a request). #358
  • Feature Parts and headers can be cast to integer or double. #358

Mustache

  • Feature Added support for C++ lambdas in Mustache. #299
  • Feature API Breaking Added function to set a templates directory. #362
  • Bug Fixed missing ; in mustache escaping. #342
  • Feature API Breaking returning page.render() from a route now sets Content-Type header to HTML. #346
  • Bug Ensured const correctness in template_t. @neumannt #325

JSON

  • Feature JSON values can now be initialized using initializer lists. @lcsdavid #190 #203 #242
  • Bug Fixed problem where JSON would output nan or inf values. @Vhuynh25 @rremigius #328
  • Bug Fixed problem with excess recursion when reading JSON. @neumannt #326
  • Bug Made JSON float output faster and more accurate. #203

Logging

  • Feature API Breaking Simplified creating a custom logger. #288 #290
  • Feature Added Support for using local time in default logger. @kingster #368

Documentation

  • Added Landing Page. #197 #201 #228
  • Updated Site theme. #197 #228
  • Placed financial and code contributors on landing page. #228 #311 #373
  • Updated install documentation and separated instructions for different OSes. #228 #238 #293
  • Added Social media cards. #197 #203 #270
  • Added donate button to site header. #197
  • Added indicator for features introduced after v0.1. #197
  • Added HTTP Authentication tutorial. #293
  • Updated documentation to mention new features. #203 #228 #372
  • Made API reference more readable by removing parts only intended for internal use. #372
  • Improved visibility on readme gitter badge. #228
  • Fixed several typos. #297
  • Used proper markdown syntax in documentation. #270

CI/CD

  • Fixed issue where cpp-coveralls wasn't compatible with newer GCOV versions. #228
  • Fixed issue where PR coverage would affect master coverage results. #228
  • Fixed coveralls branch. #198
  • Removed pip3 command from PR workflow. #270

Testing / Examples

  • Examples can now compile on Windows. #209
  • Tests can now compile without CROW_ENABLE_COMPRESSION being defined. #209
  • Added Tests for HTTPS (SSL) version of Crow. #228 #130
  • Bug Fixed issue where the response stream test would randomly fail. #234
  • Tests now use Debug build (debug flags + without optimization). #228
  • Added unit test for server timeout. #277
  • Updated catch2 to v2.13.8. @neumannt #322
  • Added tests for content type constructor for response. @hg333 #213
  • Updated examples and tests to include JSON initializer lists. #190 #203
  • Fixed typo in example_with_all.cpp. @odeits #161

Other

  • Created a new logo. #172
  • Updated Crow License. #172 #228
  • Formatted framework source code using Crow's own clang-format rules (and created a bot to enforce the rules for all PRs). #286 #293