Sean T. Allen #632

Hi all, Kevin Cantu released version 0.3.0 of Pony yesterday. Big thanks to Kevin on this, he got nightlies being built and otherwise got our release pipeline mess cleaned up. The only question now is how long before Sylvan and I screw it up. A lot of people made contributions to this version. I want to personally thank all of them. I'm loving using Pony day to day and each of you who has contributed has a part in my daily joy. As some of you might notice, we went a long time between releases. Expect a much more regular release cadence now that its easier to do. Change log notes follow: [0.3.0] - 2016-08-26 Fixed Check for Main.create before reachability analysis.

Interface subtyping need not be invariant on type args.

@fowles: handle regex empty match.

@praetonus: readline history handling.

Put unbox constructors on machine words into the vtable.

@jonas-l: parse URL with omitted password.

Adjust for ephemerality in cap_single().

Finalisation always occurs.

Type checking platform dependent FFI declarations on all platforms.

Interface subtyping takes receiver capabilities into account.

Pony-as-library support, particularly pony_register_thread().

Bug in HashMap._search .

. Crashing gc bug caused by "force freeing" objects with finalizers.

Bug in String.compare and String.compare_sub .

and . Crashing gc bug from using get instead of getorput in gc_markactor .

instead of in . Add -rpath to the link command for library paths

Simplify contains() method on HashMap.

Lambda captures use the alias of the expression type.

Trace boxed primitives in union types.

Use -isystem for LLVM include directory only if it is not in search path.

Union tuples as return type with machine words (issue #849)

Incorrect \" handling in character literals

Incorrect \' handling in string literals

Compiler crash on type alias of a lambda type.

Late detection of errors silently emitted in lexer/parser.

Compiler crash when handling invalid lambda return types

Memory leak fixed when something sent as iso is then sent as val.

Compiler crash when handling object literal with uninitialized fields.

Associate a nice name with function types based on the type of the function.

Use the nice name for types when generating documentation.

Compiler crash when generating C library for the exported actors containing functions with variadic return type contatining None

AST Printing of string literals with quote characters.

HTTP/1.1 connections are now persistent by default.

Runtime crash when Main.create is a function instead of a constructor.

Compiler bug where as operator with a lambda literal caused seg fault.

operator with a lambda literal caused seg fault. String.read_int failure on lowest number in the range of signed integers.

Regex incorrect of len variable when PCRE2_ERROR_NOMEMORY is encountered.

No longer silently ignores lib paths containing parens on Windows.

Make linking more dynamic and allow for overriding linker and linker arch.

Fix issue with creating hex and octal strings if precision was specified.

Correctly parses Windows 10 SDK versions, and includes new UCRT library when linking with Windows 10 SDK.

Performance of Array.append and Array.concat (no unnecessary calls to push).

Performance of Map.upsert and Map.update (don't replace existing keys)

Segmentation fault from allocating zero-sized struct.

Segmentation fault from serialising zero-sized array.

Make sure all scheduler threads are pinned to CPU cores; on Linux/FreeBSD this wasn't the case for the main thread.

Assertion failure from type-checking in invalid programs.

Make the offset parameter of String.rfind inclusive of the given index. Added 32-bit ARM port.

32-bit X86 port.

Embedded fields.

C-style structs.

Maybe[A] to encode C-style structs that aren't present.

OpenFile and CreateFile primitives to return well-typed errors.

@fowles: String.join

Array slice, permute, reverse.

Pooltrack and telemetry runtime builds.

ifdef expressions for platform dependent code.

User specified build flags.

Pure Pony implementation of 128 bit integer maths for 32-bit platforms.

UDP broadcast for both IPv4 and IPv6.

Message batching.

Case functions.

Timeouts for PonyTest long tests.

contains() method on HashMap

contains() method on HashSet

Support for empty sections in ini parsing.

--verbose,-V option for compiler informational messages.

Logger package

ArrayValues.rewind() method.

method. Nanos primitive in time package.

Persistent package, with List and Map

Custom chunk size for Stdin.

Itertools package

TCPConnection.expect

TCPConnectionNotify.sentv

HashMap.get_or_else

ponytest TestHelper.expect_action, complete_action, and fail_action

ponytest TestHelper.dispose_when_done

copysign and infinite for floating point numbers

contains() method on Array

GC tracing with acquire/release semantics.

pony_alloc_msg_size runtime function

net/WriteBuffer

serialise package.

package. optional parameter in json objects, arrays, and doc to turn on pretty printing

DoNotOptimise primitive

primitive compact method for Array and String

method for and String.push_utf32() method.

method. Allow the use of a LLVM bitcode file for the runtime instead of a static library.

add iterators to persistent/Map ( keys() , values() , and pairs() )

, , and ) add notification of terminal resize

trim and trim_in_place methods for Array and String .

and methods for and . is_null_terminated and null_terminated methods for String .

and methods for . from_iso_array constructor on String .

constructor on . Sort primitive

primitive PonyBench package

--ponypinasio runtime option for pinning asio thread to a cpu core. Changed Interfaces are invariant if they are structurally equivalent.

Improved type checking with configuration management.

Improved realloc behaviour after heap_alloc_large.

Set-based upper bounds for generic constraints.

Moved the position of a default capability in a type specification.

Replaced '&' with 'addressof' for taking address in FFI calls.

@jemc: use half-open ranges for String operations.

Improved TCPConnection with a dynamically size of buffers

Drop dynamic LTO detection in the build system.

Parameterized Array.find and Array.rfind with a comparator.

this-> adapted types check match on the upper bounds.

adapted types check match on the upper bounds. Renamed identityof to digestof .

to . Moved and renamed net/Buffer to buffered/Reader and buffered/Writer .

to and . Print compiler error and info messages to stderr instead of stdout.

Hashmap.concat now returns this rather than None

now returns rather than Only allow single, internal underscores in numeric literals.

ponyc --version now includes the build type (debug/release) in its output.

now includes the build type (debug/release) in its output. Strings now grow and shrink geometrically.

Embedded fields can now be constructed from complex expressions containing constructors

Sendable members of non-sendable objects can be used in recover expressions in certain cases.

ProcessNotify functions are passed a reference to ProcessMonitor.

The constructor of Options doesn't require an Env anymore but just a simple String array.