Skip to content

v1.0 Taking Flight

Compare
Choose a tag to compare
@The-EDev The-EDev released this 29 Mar 12:05
· 29 commits to v1.0 since this release
e7007b1

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