Skip to content

Latest commit

 

History

History
350 lines (178 loc) · 23.8 KB

CHANGELOG.md

File metadata and controls

350 lines (178 loc) · 23.8 KB

Change Log

This file includes all notable changes to Criollo. Please consult this file for the specifics, before you upgrade.

Criollo uses Semantic Versioning.


1.1.0 (09/07/2020)

Released on Wednesday, September 7, 2022. This release removes OpenSSL, adds initial SPM support and improved Apple Sillicon support, as well as a few improvement and stabilization refactors, bug fixes and general purpose updates in dependencies and Xcode projects.

Tweaks and improvements

  • Remove OpenSSL submodule which removes support for HTTPS with certificate and private key on iOS. HTTPS using identity is still possible. #69

  • Adds initial SPM support. Work is already in progress om improved support. #28

  • CocoaAsyncSocket was updated to commit 5ddba5e.

API Changes

  • CRStaticFileManager and CRStaticDirectoryManager were made public. 54a3138

  • Update iOS deployment target to 12.0 4d5b102

Bugfixes

  • Remove deprecated and redundant VALID_ARCHS=x86_64 which prevented compilation on Apple Sillicon. #73

  • Since OpenSSL has been completely removed, there should be no more issues with linking it for Apple Sillicon. #92

1.0.1 (07/07/2020)

Released on Tuesday, July 7, 2020. This is a hotfix release that fixes a minor bug whereby the CRApp global is not initialized correctly.

1.0.0 (07/05/2020)

Released on Sunday, July 5, 2020. This release marks a point where Criollo has reached maturity and stability. The release contains a few improvement and stabilization refactors, bug fixes for all known issues, as well as general purpose updates in dependencies and Xcode projects.

Tweaks and improvements

  • CRApplication was refactored with focus on improving the initialization, termination and signal handling workflows. #62

  • Static file and directory serving was refactored to provide better I/O and memory performance, improved error handling, as well as a cleaner code architecture. #53 and #54

  • Added the HTTPAuthenticator example to showcase how HTTP header based authorization and routing can be performed. #37 and #56.

  • CocoaAsyncSocket was updated to commit 72e0fa9.

API Changes

  • CRServer's workerQueueProperty has been made public, in order to allow furher customization of the server's threading model. #27

  • Added -patch:block: convenience method to CRRouter. #42

Bugfixes

  • Fixed an error parsing URL encoded request body #30

  • Fixed a crash caused by an unhandled exception in the file server, if content being served changed while being read #35

  • Fixed a bug whereby placeholder route definitions did not match . #38

  • Fixed inccorect handling of HTTP/1.0 requests that did not include a Host header #40

  • Fixed inclusion of GCDAsyncSocket that could cause issues when integration Criollo via CocoaPods #45

  • Fixed an issue that caused CRServerDelegate's -serverDidStopListening: not to get called #57

0.5.5 (08/09/2018)

Released on Thursday, August 9, 2018. This is a service release that updates project settings for Xcode compatibility.

No APIs are changed.

0.5.4 (04/04/2018)

Released on Wednesday, April 4, 2018. This is a service release that finalizes previous refactoring and cleanup endeavors.

No APIs are changed.

0.5.3 (04/04/2018)

Released on Wednesday, April 4, 2018. This is a service release that adds Travis CI pod validation and splits the bundled OpenSSL libraries into a different submodule.

No APIs are changed.

0.5.2 (04/02/2018)

Released on Monday, April 2, 2018. This is a service release that adds Travis CI.

0.5.1 (03/31/2018)

Released on Saturday, March 31, 2018. This is a service release that fixes Xcode 9.3 warnings.

0.5.0 (03/27/2018)

Released on Tuesday, March 27, 2018. This release makes Criollo available for tvOS, adds HTTPS support on all platforms, implements a number of tests, as well as addresses a number of bugs.

0.4.17 (07/26/2017)

Released on Wednesday, July 26, 2017. This is a maintenance and update release that aims to address various issues arising from Xcode and SDK updates.

0.4.16 (03/21/2017)

Released on Tuesday, March 21, 2017. This is a hot-fix release that handles a potential issue when running Criollo servers on iOS devices whereby response data would be buffered instead of sent to the client, thus making it seem like the server was stalling.

Fixed

  • A racing condition occurred in [CRConnection sendDataToSocket:forRequest:], by which the request would be removed from the current connection’s requests array before the response was sent, thereby causing the execution to enter the buffering code path instead of actually sending the data. This has been fixed by adding an additional check for the length of the array. 6b7f51d

0.4.15 (03/11/2017)

Released on Sunday, March 11, 2017. This is a hot-fix release that ensures Carthage compatibility and eliminates some potential warnings related to code formatting standards.

Fixed

  • Missing shared build schemes were added to ensure Carthage compatibility. 69e2b75

  • Missing new lines at the end of header files were added. 294e844

0.4.14 (02/15/2017)

Released on Wednesday, February 15, 2017. This is a hot-fix release that closes issue #7 that caused incorrect relative path resolution for NSDirectoryManager routes mounted at the root path, as well as tweaking some auto-indexing functionality.

Fixed

  • The resolution of relative paths was attempted also for static routes mounted at /, which led to an incorrect result, since the relative path is always the same as the requested path. 1a1beb4

  • Do not display the ../ link for auto-indexed directories when we are at the top level of the mount path. 858693c

  • Fix the generation of auto-indexed links for NSDirectoryManager routes mounted at the root path. There was an extra / added to the top level link href. 4ea82e7

0.4.13 (01/10/2017)

Released on Tuesday, January 10, 2017. This is a hot-fix release that closes an issue introduced in 144fab1 where query string params that do not have a value cause an unhandled exception.

Fixed

  • An index out bounds exception was raised in the URL encoded string parsing block if the key value pair did not have a value. There is now a check to prevent that. f41fb06

0.4.12 (01/10/2017)

Released on Tuesday, January 10, 2017. This is a hot-fix release that closes an issue that could cause invalid URL-encoded parameters to be lost.

Fixed

  • When decoding URL-encoded strings, CRRequest would remove the keys or values that would not properly decode using stringByRemovingPercentEscapes. The current implementation attempts to also pass these strings through stringByDecodingURLEncodedString so that some intermediate representation can be salvaged. 144fab1

0.4.11 (01/09/2017)

Released on Monday, January 9, 2017. This is a hot-fix release that fixes a bug introduced in version 0.4.8, that could cause premature response termination for certain async operations performed inside nested routers (CRViewController or CRRouteController).

Fixed

  • Built-in CRRouter subclasses would call the route block’s completionHandler right after calling executeRoutes:resquest:response:withNotFoundBlock:. This is not valid for routes that perform any async operations and are defined as the last route in the path, as the completionHandler gets invoked before the async operation has ended, thus causing the response to finish, causing an NSInternalInconsistencyException. 844cb5f

0.4.10 (11/11/2016)

Released on Friday, November 11, 2016. This release implements MIME (binary) request body parsing.

Added

  • [CRRequest] now automatically parses MIME (binary) request bodies. After parsing such a request, the files property will be a dictionary containing the uploaded file as its first value (the key is “0”). Uploaded files are deleted from their temporary location when the CRRequest object is deallocated.

0.4.9 (10/24/2016)

Released on Monday, October 24, 2016. This is a hot-fix release that fixes a bug introduced in version 0.4.7, that caused routes defined within CRViewControllers to not be resolved correctly.

Fixed

  • CRViewController initWithNibName:bundle:prefix now passes along the correct prefix instead of the default. 57d71d9

0.4.8 (10/24/2016)

Released on Monday, October 24, 2016. This is a hot-fix release that ensures that all responses are finished.

Fixed

  • CRRouter now makes sure that the response is finished once all blocks have been executed. Also, if no data has been sent, the default error handling block will be invoked. The net result of this is that a 404 response will be sent for all request paths that do not actually send something back to the client. 4f3d0ec

0.4.7 (10/24/2016)

Released on Monday, October 24, 2016. This is a hot-fix release that addresses failed server initialization when no SSL certificates are provided.

0.4.6 (10/23/2016)

Released on Sunday, October 23, 2016. This release implements multipart/form-data request body parsing and HTTPS on macOS.

Added

  • [CRRequest] now automatically parses multipart/formdata request bodies. After parsing such a request, the body property will be a dictionary containing the parsed properties and the files property will be a dictionary containing the uploaded files. Uploaded files are deleted from their temporary location when the CRRequest object is deallocated.
  • [CRTPServer] can now deliver content over HTTPS (macOS only). Use the isSecure, certificatePath and certificateKeyPath properties to configure the HTTPS server. Both the key and the certificate bundle are expected to be in PEM format.

0.4.5 (09/12/2016)

Released on Monday, September 12, 2016. This release removes CRNib and CRView caching in favor of OS filesystem memory mapping.

0.4.4 (09/07/2016)

Released on Wednesday, September 7, 2016. This release includes memory allocation and performance improvements. No API were changed.

0.4.1 (07/26/2016)

Released on Tuesday, July 26, 2016. This is a hot-fix release.

Fixed

A bug in CRRoute that could cause incorrect (greedy) matching of regex path specs. a2b0470

0.4.0 (07/26/2016)

Released on Tuesday, July 26, 2016. This is a major overhaul of the routing mechanism.

Changed

The whole routing subsystem has been changed. The public API’s have also been changed. Check out the CRRouter documentation at: http://cocoadocs.org/docsets/Criollo/0.4.0/Classes/CRRouter.html

0.3.1 (07/25/2016)

Released on Monday, July 25, 2016. This is a hot-fix release.

Fixed

  • A bug in CRRouteController that affected the resolution of relative paths. f952862

0.3.0 (07/25/2016)

Released on Monday, July 25, 2016. This release has significant API changes. It’s main focus is on extending the functionality of the CRRouter API introduced in version 0.2.0.

The core router logic has been re-written. Also now you can define routes using regular expressions, variable replacements.

Added

  • CRRouter now has a series of convenience methods for adding blocks to routes. This should make the code much cleaner and it looks damn good in swift. 7ad5d9ae

Changed APIs

  • All methods containing HTTPMethod: in their signatures have been refactored to include method:. This affects CRRouter. c3a4974

0.2.0 (07/21/2016)

Released on Thursday, July 21, 2016. This release has significant API changes and it is meant to ease development for more “real-life” scenarios.

Added

  • CRRouter is base-class for routing. Functionality previously implemented by CRServer is now implemented by this class. CRServer now inherits from CRRouter. 10165eb3
  • CRRouteController is meant to delegate control over a particular set of routes. It is mean for implementing more complex routing patterns. CRRouteController inherits from CRRouter so it also can define and implement its own routes, relative to the path it was mounted at. 4dfe99ee
  • The [CRResponse redirectToURL:statusCode:finish:] and [CRResponse redirectToLocation:statusCode:finish:] methods which control wether the response should be finished after the redirect header is set. ba7c915b

Changed APIs

0.1.14 (04/14/2016)

Released on Tuesday, April 14, 2016. This is a maintenance release. The main thing is that the internal structure of the Xcode project has been changed. There is now only one module name Criollo for both iOS and OSX.

0.1.13 (04/05/2016)

Released on Tuesday, April 5, 2016. This release focuses on optimizing memory usage, stability and generally speaking speed. It also includes some API changes to make developers’ lives easier.

Changed APIs

  • Added a callback to [CRServer closeAllConnections], thus becoming [CRServer closeAllConnections:(dispatch_block_t _Nullable)completion]. 538d4ce.

Additions and Improvements

  • Added signal handler in CRApplication for SIGINT, SIGTSTP and SIGQUIT. 1c2500b.
  • String parsing in request headers is now done without excessive memcpy operations both for HTTP and FastCGI.
  • Both OS X and iOS frameworks are now developed with embedded apps. The OS X framework’s app is written in Objective-C, whilst the iOS app is written in Swift.
  • All examples now use Criollo as a pod.

Fixed

  • Fixes a racing condition that could cause a crash when closing a connection that handles a large number of concurrent requests. 7f90600

0.1.12 (03/15/2016)

Released on Tuesday, March 15, 2016.

Fixed

  • Missing support for the HEAD HTTP request method. dbdbe30

0.1.11 (03/15/2016)

Released on Tuesday, March 15, 2016.

Fixed

  • Potential crash when CRConnection is deallocated. a052003
  • response.HTTPCookie dictionary was not initialized so no cookies were being sent. 809334a
  • CRViewController does not set Ccontent-length header. This is temporary. 11c2236

0.1.10 (03/14/2016)

Released on Monday, March 14, 2016.

Added

  • [CRServer delegateQueue] property and [CRServer initWithDelegate:delegateQueue:] initializer. 4ec8cff

Fixed

  • Fixed a potential crash when [CRMimeTypeHelper setMimeType:forExtension:] is called with a nil extension. 3414fd8

0.1.9 (03/13/2016)

Released on Sunday, March 13, 2016. This is just a hot-fix release.

Fixed

  • Fixed potential crash in the builtin server error handling block, due to an incorrect format string. 6c3a0be.

0.1.8 (03/13/2016)

Released on Sunday, March 13, 2016. This release is meant to increase the “real-world” usage karma and to stabilize and extend some existing APIs.

Changed APIs

  • Refactored [CRServer addStaticDirectoryAtPath:] to [CRServer mountStaticDirectoryAtPath:]. 24c7b22.
  • CRHTTPMethod and CRHTTPVersion are now enumerated types, instead of existing NSString #define.
  • Refactored the nullability specifiers across the board. Now using NS_ASSUME_NONNULL and nullable/_Nullable as needed.

Added

0.1.7 (03/07/2016)

Released on Monday, March 7, 2016. This is the first stable and real-world-ready release.