summarylogtreecommitdiffstats
path: root/changelog.md
blob: abea96593c08cf046e9fab097c919c2c78513f6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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](https://crowcpp.org/guides/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