Skip to content

Releases: CrowCpp/Crow

v1.1.0

23 Jan 19:16
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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

v0.3+4 Security patch

12 Jan 00:59
87adb19
Compare
Choose a tag to compare

This release fixes major problems in Crow, from a potential memory leak to a few security vulnerabilities. Everyone using v0.3 is advised to update to this version as soon as possible.

This will most likely be the last update to v0.3 as we prepare for the next release.

  • Bug Data leak when sending static files. #292
  • Bug Incorrect handling of signal handlers. @mcopik #296
  • Bug crow::json escapes UTF-8 characters above value 127. @mosolovsa #304
  • Bug Path Traversal and Content Injection exploits patched. @snyk Team #317

v0.3+3 hotfix

15 Oct 02:05
Compare
Choose a tag to compare

This release fixes a few issues experienced mainly on windows.
Note: While Crow did receive an updated build / release system, it isn't included in this release due to our desire to retain backwards compatibility. You can expect the new system to be in full effect with the next minor/major release.

  • Bug JSON strings not correctly dumped on Microsoft Windows with Multi Byte Character Set encoding. @lcsdavid #196
  • Bug Unresolved conversion warning fix. @lcsdavid #174
  • Updated All logos.

v0.3+2 hotfix

05 Jul 10:47
Compare
Choose a tag to compare

My apologies for releasing another version so soon. This release fixes the following:

  • Bug disabling crow static folder makes all routes inaccessible #163