TheRest 2 Release Notes

2.9.22

  • Updated Async method overloads so they invoke OnSuccess/OnFailure/OnComplete.
  • Updated fm.xhr/postMessage/jsonp to better support usage outside of TheRest.

2.9.21

  • Fixed issue in JavaScript SDK that could result in duplicate headers for XHR requests.

2.9.19/20

  • Fixed bug in OnHttpRequestCreated for JavaScript XHR transport.
  • Removed support for Windows Phone 7.
  • Removed AppTransportSecurity bypass from iOS, macOS, and tvOS examples.
  • Updated JavaScript JSON serializer to catch attempts to serialize undefined values.

2.9.18

  • Added TheRestEventArgs.UriTemplate as a way to read the current URI template.
  • Added TheRestEventArgs.Order as a way to read the current order.

2.9.16/17

  • Fixed possible null reference exception in WebSocket class under load.

2.9.14/15

  • Added libraries for Xamarin.tvOS.

2.9.10/11/12/13

  • Fixed bug in JavaScript synchronous XHR handler raised if the request was aborted.

2.9.9

  • Updated Java HTTP submodule to enforce HTTP timeout manually when platform doesn't enforce it.

2.8.10/2.9.0/1/2/3/4/5/6/7/8

  • Fixed bug where using postMessage could interfere with FM.Server's postMessage listener.

2.8.9

  • Added Windows 10 Universal libraries.
  • Updated Java HTTP transfer to allow proxies.

2.8.8

  • Fixed bug in TheRestEventArgs.GetParameter(int) that caused query parameters to be indexed before path parameters.

2.8.7

  • Enabled full bitcode for all iOS/Mac libraries (no more bitcode markers).
  • Fixed Xamarin.Android example warnings (XA0101: @(Content) build action is not supported).
  • Removed extra "return" statements in JavaScript (causing warnings in Firefox).

2.8.6

  • Fixed race condition where a chain of callbacks could be released mid-execution.
  • Fixed warnings in iOS/Mac libraries regarding being built for a newer version than being linked.

2.8.5

  • Added client.get/setDisableJSONP to the JavaScript SDK.

2.8.2/3/4

  • Added example for tvOS.
  • Fixed bug in Java SDK where removing an event handler might not have the desired result.
  • Improved performance in iOS/Mac SDK by streamlining data access.

2.8.1

  • Added libraries for Apple tvOS.
  • Added awaitable async overloads for asynchronous methods in Xamarin SDKs.
  • Fixed a bug where JSON might be incorrectly treated as binary.

2.8.0

  • Fixed bug preventing TheRestEventArgs.Parameters from initializing for events with no URI template.
  • Fixed bug in iOS/Mac where JSON validation might crash on malformatted JSON.
  • Improved error reporting when using incorrect names for callback functions in JavaScript.

2.7.7

  • Fixed bug where ResponseStatusCode did not propagate to OnSuccess callback.
  • Updated examples to use iOS 6 as deployment target.
  • Updated examples to bypass AST for iOS 9.
  • Removed JSONKit from examples (uses native NSJSON now).

2.7.4/5/6

  • Updated JavaScript minification to use UglifyJS (slightly larger output, but more safe).

2.7.2/3

  • Added support for setting CrossOriginResourceSharing.AllowedHeaders/AllowedMethods at runtime.
  • Added CrossOriginResourceSharing.AllowedOrigins to support a white-labelled list of allowed domains (defaults to null, which allows any origin).
  • Updated CrossOriginResourceSharing.AllowedHeaders/AllowedMethods to be a string array instead of generic string list.

2.7.0/1

  • Updated AMD headers in JavaScript SDK to support module naming.

2.6.4

  • Added AMD/Node dependency mappings to JavaScript modules.
  • Added Windows 8.1 libraries.
  • Added Windows Phone 8.1 libraries.
  • Added Windows Phone Silverlight 8.1 libraries.
  • Added Windows Phone 8.1 Portable libraries.
  • Updated iOS/Mac SDK deployment targets to iOS 6.0 and Mac OS X 10.7 to avoid linker warnings in Xcode 7.

2.6.3

  • Added AsyncException.Rethrow property to control the re-throwing of exceptions in application code callbacks.
  • Added support for Arabic locales in Java string formatting.
  • Updated AsyncException so it never re-throws ThreadAbortException.

2.6.2

  • Added armv7s slice for iOS libraries.
  • Fixed bug in Windows 8 TCP socket wrapper.
  • Fixed bug in Windows 8 timeout timer.

2.6.1

  • Updated iOS/Mac SDKs to use weak references for callbacks to prevent retention cycles.

2.6.0

  • Updated Dynamic objects so cloning can never run into "collection modified" exception.
  • Updated built-in JSON serializer/parser to improve performance.

2.5.11/12/13

  • Updated TimeoutTimer to accept negative values (indicates infinite timeout).

2.5.10

  • Added additional logging in JavaScript when an exception is thrown in a callback.
  • Added fix for missing 'response' property in XHR requests in node.js 0.12.
  • Updated Xamarin.Mac SDK for compatibility with current release.
  • Removed ManagedMonitor. Replaced with ManagedLock and ManagedCondition.

2.5.8/9

  • Fixed bug that could cause TCP socket failure on iOS/Mac.

2.5.6/7

  • Added non-string detection in JavaScript SDK to help alert to situations where non-strings are passed into string parameters.

2.5.3/4/5

  • Fixed bug where DNS might resolve to an empty array on iOS.
  • Updated server-side parameter indexing to move query string parameters after path parameters.
  • Updated TCP socket implementation on all platforms to support additional features.

2.5.2

  • Added Headers collection to SendArgs to support custom headers with requests.
  • Updated Xamarin.iOS SDK to the new Xamarin Unified API (required for 64-bit support).
  • Updated Xamarin.Mac SDK to the new Xamarin Unified API.

2.5.1-2

  • Added Xamarin.Mac client libraries.
  • Updated server responses to always format as UTF-8, regardless of machine-level settings.

2.5.1

  • Updated documentation.

2.5.0-2/3

  • Updated JavaScript null/empty string checks to also test for undefined variables.

2.5.0

  • Updated documentation.

2.4.11-6

  • Fixed bug where iOS callbacks might not execute on 64-bit processors.

2.4.11-2/3/4/5

  • Fixed bug where iOS apps might crash when performing an atomic increment.

2.4.11

  • Added TheRestEventArgs.ResponseType to allow custom "Content-Type" header.
  • Updated Android HTTP transport to handle requests with no output data.

2.4.10-2

  • Updated default .NET JSON serialization to retrieve type from argument instead of generic argument.

2.4.10

  • Added JsonProvider framework.
  • Added FM.JsonNet extension for using Json.NET with TheRest for .NET.
  • Updated server params to pull from query string as well as match bound variables.
  • Updated HTTP transfer to use system proxy if present by default.
  • Updated HTTP transfer to set content length to zero when posting with no data (resolves 411 server response).
  • Updated type loading to handle edge-cases where type is defined multiple times in different assemblies.

2.4.9

  • Added shortened method overloads to iOS/Mac SDKs.
  • Fixed bug in iOS/Mac NameValueCollection string comparison.
  • Updated automatic form processing on the server to handle null keys in the submission.
  • Updated iOS/Mac HTTP transfer so requests complete, even if calling thread goes away.

2.4.8

  • Added additional error handling to web request transfer in Java SDK.
  • Added OnUnhandledException event to Client to help track down unhandled async exceptions in user code.
  • Added explicit aborting to timed out web requests in .NET to avoid potential unmanaged leak.
  • Added FM.HttpWebRequestTransfer.UseProxy in .NET to force clients to use system-wide proxy.
  • Updated parameter matching to preserve URI encoding.
  • Updated handling of async exceptions to provide additional information and write to the log.
  • Updated documentation.

2.4.7

  • Updated Java SDK to use native types wherever possible (general performance improvement).
  • Updated JavaScript JSON date parsing to avoid issues deserializing strings that contain Date definitions.
  • Updated documentation with information about verbose error handling.
  • Updated documentation with information about using Mono on the server.

2.4.6

  • Updated postMessage protocol to fall-back to JSON-P if the DOM fails, regardless of previous success.

2.4.5

  • Added RequiresLocal property to TheRestSecurityAttribute to allow defining REST methods that are accessible only from the local machine (i.e. migrations).
  • Added Mono system libraries to the assembly scanner's exclusion list.
  • Added header null-check to avoid null reference exceptions when accessing Content-Type using an HttpListener.
  • Added back-off URI template matching to work around bug in Mono's implementation of UriTemplate.Match.
  • Updated config initialization to avoid internal Mono bug.

2.4.4

  • Updated Android examples.

2.4.3

  • Added awaitable Async method overloads for Windows Phone libraries.
  • Disabled automatic proxy detection in .NET to improve initial request time.

2.4.2

  • Added x86_64 slice to iOS libraries (64-bit simulator).
  • Added null handling to default JSON serializer in .NET.
  • Added Visual Studio 2013 support to examples.
  • Improved error message when using a malformed object-literal shortcut in JavaScript.
  • Fixed date handling in default JSON serializer in JavaScript.
  • Fixed bug where examples/demos might use an old JavaScript client.

2.4.1

  • Updated server event args to include binary file content for multi-part form submissions.
  • Updated server network parser to reset network stream before reading (to support HTTP modules that pre-process the stream).
  • Fixed date serialization bug for Java.
  • Fixed date serialization bug for iOS/Mac.
  • Fixed date serialization bug for JavaScript.
  • Fixed UTF-8 encoding bug in JavaScript.
  • Removed Json class from Xamarin.Android library for compatibility with Xamarin Indie development (JsonLite is still available).
  • Updated documentation.

2.3.12

  • Added parameter value encoding to all outgoing requests.
  • Added exception handling for bad references during assembly load.
  • Updated error handling in NET.Server.HttpListener to avoid ProtocolViolationException caused by HEAD requests.
  • Fixed bug when using postMessage for HTTP transfers to a wildcarded domain.
  • Removed cache buster when using XHR for http transfers so CORS pre-flight requests are re-used.

2.3.11

  • Added AMD/CommonJS wrappers for JavaScript libraries.

2.3.10

  • Added TextViewLogProvider to fm.jar for Android.
  • Added FMTextViewLogProvider to libFM.a for iOS/Mac.
  • Added TextBlockLogProvider to FM.dll for Windows 8 and Windows Phone.
  • Renamed NSMutableArray's setObject:atIndex: to setObj:atIndex: to avoid conflict with private Cocoa Foundation method.
  • Updated XHR layer so responseType is not sent for synchronous requests (avoids console error).

2.3.9

  • Updated JavaScript fm.consoleLogProvider to use newlines instead of HTML line break tags.

2.3.8

  • Added TheRestEventArgs.RequestForm to process web-form data (files and key-value pairs) sent to a REST endpoint.
  • Added raw binary support for browsers that don't identify Uint8Array as a function.

2.3.7

  • Added support for directly sending, receiving, and processing raw binary data buffers in JavaScript.
  • Added fm.consoleLogProvider to JavaScript.
  • Added static quick-constructors for iOS and Mac.
  • Updated handling of binary data buffers to improve performance on large data packets.
  • Updated documentation.

2.3.6

  • Updated Android examples to use minimum API level 16.

2.3.5

  • Updated documentation.

2.3.4

  • Added TextLogProvider for string-based in-memory log capturing.
  • Fixed bug in JavaScript when formatting strings with > 3 arguments.
  • Updated LogProvider to simplify implementations.
  • Updated fm.domLogProvider in JavaScript to include UTC timestamps.
  • Updated JavaScript to support post-DOM loading (i.e. via modernizr).
  • Updated documentation and fixed some formatting issues.

2.3.3

  • Added libraries built specifically for Unity.
  • Updated documentation.

2.3.2

  • Added support for multiple TheRestEvent attributes on a single method.
  • Added First Steps guide to SDK.
  • Updated Java to use primitive byte instead of Byte to improve performance.
  • Updated ParseAssistant to use the invariant culture so numbers are consistently parsed.
  • Fixed bug where multiple explicitly-ordered event methods might receive the wrong parameter set.
  • Fixed string formatting bug in Java/Objective-C for formats with more than 4 arguments.
  • Fixed bug where events might not fire after adding/removing callbacks in Cocoa.
  • Updated documentation.

2.3.1

  • Updated JavaScript libraries so an error is thrown if scripts are loaded in the wrong order.
  • Updated iOS examples with minor UI fixes.

2.3.0

  • Added support for PATCH and HEAD requests.
  • Added Language property to client/server API to support Accept-Language in requests and Content-Language in responses.
  • Added BeforeXXX and AfterXXX events that only fire when a registered XXX event is triggered.
  • Added Proxy to FM.Server for efficient relaying of individual HTTP requests.
  • Added fm.domLogProvider for JavaScript.
  • Added support for using blocks as callbacks in iOS/Mac.
  • Fixed bug in JavaScript where multiple iframes could be created when using HTML5 postMessage for cross-domain requests.
  • Fixed bug in JavaScript GUID comparison.
  • Updated iOS/Mac examples to use new block-based callbacks.

2.2.0

  • Added support for automatic handling of doubled slashes when forming URLs.
  • Added Log class to FM library for client-side logging.
  • Added native Android examples.
  • Added node.js example.
  • Revamped examples for easier navigation and more relevant use cases.
  • Renamed exception classes to start with prefix "Http" to avoid naming collisions.
  • Renamed MonoDroid/MonoTouch to Xamarin.Android/iOS.
  • Updated documentation.

2.1.6

  • Fixed JavaScript bug.

2.1.5

  • Updated JavaScript client to support use within a node.js application.
  • Updated iOS/Mac libraries to resolve issues associated with incorrect detection of null values.

2.1.4

  • Added FMNSLogProvider for iOS/Mac.
  • Added ConsoleLogProvider for .NET/Silverlight/Windows/Windows Phone.
  • Added ConsoleLogProvider for Java.

2.1.3

  • Fixed bug in iOS/Mac binary message transfer.
  • Various performance improvements for iOS/Mac.
  • Updated documentation.

2.1.2

  • Updated NSString comparisons in Cocoa to properly check for nil.
  • Updated download package layout.
  • Updated documentation.

2.1.1

  • Improved server initialization time.
  • Updated documentation.

2.1.0

  • Added assemblies for Windows Phone 8.0.

2.0.0.12

  • Added MVC4 examples.
  • Improved serialization performance when using FM.Serializer.
  • Updated TheRestEventArgs to allow manual setting of the ResponseStatusCode.
  • Updated exception logging to output error-level logs for unmapped exceptions (which generate 500 status codes).
  • Updated exception logging to output debug-level logs for mapped exceptions.
  • Updated documentation.

2.0.0.11

  • Renamed project to TheRest.
  • Reduced the size of the JavaScript client.
  • Added Client.SendAsync overload for .NET 4+ and WinRT to allow the use of await/async.
  • Removed JSON checks on TheRestEventArgs.RequestJson/ResponseJson to allow alternative formatting.
  • Fixed caching bug in postMessage transfer layer (JavaScript).
  • Updated JSON-P client implementation to reduce URL size.
  • Updated clients to throw exceptions as unhandled when an unhandled exception occurs in a user-supplied callback.
  • Updated documentation.

2.0.0.10

  • Fixed memory leak in iOS/MacOS client libraries.
  • Fixed bug in CORS failure cache for the JavaScript client.
  • Fixed bug in XHR failure handler for the JavaScript client.
  • Fixed bug in JSON-P failure handler for the JavaScript client.

2.0.0.9

  • Fixed bug in JavaScript cache buster for IE8.
  • Updated JavaScript to support the Microsoft date format when deserializing date objects.

2.0.0.8

  • Added armv7s support to iOS library and removed armv6 support.
  • Added ability to return objects from event methods instead of manually serializing.
  • Added TheRestServer.SerializeResponseHandler/DeserializeRequestHandler to support automatic serialization/deserialization for objects passed into and returned from event methods.
  • Added cache buster to all JavaScript client requests.
  • Removed 32-bit support from MacOS library to support ARC.
  • Fixed bug where provider assemblies might not load at runtime.
  • Updated examples to demonstrate using the element to localize custom error handling.
  • Updated timer in iOS/MacOS to address memory issues.
  • Updated documentation.

2.0.0.7

  • FM version sync.

2.0.0.6

  • Added library for .NET Compact Framework 3.5.
  • Updated invalid server-side method detection.
  • Updated server-side handling of empty requests.
  • Updated server example to demonstrate the use of DefaultResponseHandler.
  • Fixed JSON deserialization bug for empty arrays.

2.0.0.5

  • Added DefaultResponseHandler property to TheRestServer to support a global override of the default response to a blank GET request.
  • Added JsonLite class for mobile platforms that support it (Silverlight, Mono for Android, and MonoTouch).
  • Added null-check to array deserialization.
  • Added version info header to JavaScript, iOS, and MacOS client libraries.
  • Removed Json class from MonoTouch client library (framework doesn't support it).
  • Fixed MonoTouch examples referencing the DataContractJsonSerializer.
  • Fixed BinaryWrite bug in TheRest ServiceExample.
  • Documentation updates.

2.0.0.4

  • Added support for matching query strings in a URI template.
  • Added VerboseExceptions property to TheRestServer to configure whether the default exception serialization should include stack trace details.
  • Added DefaultSerializeExceptionToJson property to TheRestServer to support a global override of the default exception serialization.
  • Updated mega-header file for iOS and Mac OS X libraries so additional headers are not required.
  • Removed Before/After server-side events.

2.0.0.3

  • Added TheRestDefault attribute to allow default event definition.
  • Added platform considerations section to documentation.
  • Added more examples to documentation.
  • Updated TheRestEventArgs to be Dynamic so values can be passed down event chain.
  • Renamed Priority to Order in TheRestEvent attributes.

2.0.0.2

  • Added native libraries for Mono for Android.
  • Added native libraries for MonoTouch.
  • Added parameterless constructors for exception classes.
  • Added ability to attach multiple handlers to client-level events.

2.0.0.1

  • Second beta release.
  • Added TheRestSecurityAttribute.
  • Many documentation updates.
  • Updated server example project web.config settings.

2.0.0.0

  • Initial version 2 release (beta). *