Major release : otp_src_18 Build date : 2015-06-24 18 is a major new release of Erlang/OTP. You can download the full source distribution from http://www.erlang.org/download/otp_src_18.tar.gz http://www.erlang.org/download/otp_src_18.readme (this file) Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please read the README that is part of the distribution. The Windows binary distribution can be downloaded from http://www.erlang.org/download/otp_win32_18.exe http://www.erlang.org/download/otp_win64_18.exe On-line documentation can be found at http://www.erlang.org/doc/. You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_18.tar.gz http://www.erlang.org/download/otp_doc_man_18.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ---------------------------------------------------------- OTP-11997 == erts == The time functionality of Erlang has been extended. This both includes a new API for time, as well as time warp modes which alters the behavior of the system when system time changes. You are strongly encouraged to use the new API instead of the old API based on erlang:now/0. erlang:now/0 has been deprecated since it is and forever will be a scalability bottleneck. For more information see the Time and Time Correction chapter of the ERTS User's Guide. Besides the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made internally in the runtime system. Examples of such improvements are scheduler specific timer wheels, scheduler specific BIF timer management, parallel retrieval of monotonic time and system time on systems with primitives that are not buggy. OTP-12029 == ssh == A new option 'preferred_algorithms' is available for ssh:daemon and ssh:connect. This option defines the algorithms presented to the peer in the algorithm negotiation phase of the ssh protocol. The default list can be obtained from the new function ssh:default_algorithms/0. OTP-12218 == compiler debugger stdlib == Support variables as Map keys in expressions and patterns Erlang will accept any expression as keys in Map expressions and it will accept literals or bound variables as keys in Map patterns. OTP-12309 == erts stdlib == New function ets:take/2. Works the same as ets:delete/2 but also returns the deleted object(s). OTP-12585 == erts == Use persistent hashmaps for large Maps Maps will use a persistent hashmap implementation when the number of pairs in a Map becomes sufficiently large. The change will occur when a Map reaches 33 pairs in size but this limit might change in the future. The most significant impact for the user by this change is speed, and to a lesser degree memory consumption and introspection of Maps. Memory consumption size is probalistic but lesser than gb_trees or dict for instance. Any other impacts will be transparent for the user except for the following changes. Semantics of Maps have changed in two incompatible ways compared to the experimental implementation in OTP 17: -- Hashing of maps is done different by erlang:phash2/1,2, erlang:phash/1 and erlang:hash/2. -- Comparing two maps with ==, /=, =<, <, >= and >, is done different if the keys contain floating point numbers. OTP-12650 == erts == Optimization of timers internally in the VM. This include process timers (receive ... after), port timers (driver_set_timer()) as well as BIF timers (erlang:send_after()/erlang:start_timer()). Each scheduler thread now has its own lock-free timer service instead of one locked central service. This dramatically improves performance of timer management on systems with a large amount of schedulers and timers. The timer service internal data structure has also been optimized to be able to handle more timers than before. That is, each timer service is by its self able to handle more timers without dramatic performance loss than the old centralized timer service. The API of BIF timers has also been extended. Timeout values are for example no longer limited to 32-bit integers. For more information see the documentation of erlang:start_timer/4, erlang:send_after/4, erlang:cancel_timer/2, and erlang:read_timer/2. Characteristics impact: Calls to the synchronous versions of erlang:cancel_timer(), and erlang:read_timer() may take substantially longer time to complete than before. This occur when the timer that is accessed is managed by a remote scheduler. You typically want to use the new asynchronous option in order to avoid blocking the calling process. OTP-12854 == otp == Change license text from Erlang Public License to Apache Public License v2 --- POTENTIAL INCOMPATIBILITIES ----------------------------------------- OTP-11905 == erts == Fix issuing with spaces and quoting in the arguments when using erlang:open_port spawn_executable on windows. The behavior now mimics how unix works. This change implies a backwards incompatibility for how spawn_executable works on windows. OTP-11940 == erts == Add md5 and module entries to ?MODULE:module_info/0/1 and remove obsolete entry 'import'. OTP-12099 == erts == erlang:function_exported(M, F, A) will now return true if M:F/A refers to a BIF. OTP-12100 == compiler == The deprecated 'asm' option has been removed. OTP-12240 == erts kernel ssh == The internal group to user_drv protocol has been changed to be synchronous in order to guarantee that output sent to a process implementing the user_drv protocol is printed before replying. This protocol is used by the standard_output device and the ssh application when acting as a client. This change changes the previous unlimited buffer when printing to standard_io and other devices that end up in user_drv to 1KB. OTP-12292 == erts == The notice that a crashdump has been written has been moved to be printed before the crashdump is generated instead of afterwords. The wording of the notice has also been changed. OTP-12585 == erts == Use persistent hashmaps for large Maps Maps will use a persistent hashmap implementation when the number of pairs in a Map becomes sufficiently large. The change will occur when a Map reaches 33 pairs in size but this limit might change in the future. The most significant impact for the user by this change is speed, and to a lesser degree memory consumption and introspection of Maps. Memory consumption size is probalistic but lesser than gb_trees or dict for instance. Any other impacts will be transparent for the user except for the following changes. Semantics of Maps have changed in two incompatible ways compared to the experimental implementation in OTP 17: -- Hashing of maps is done different by erlang:phash2/1,2, erlang:phash/1 and erlang:hash/2. -- Comparing two maps with ==, /=, =<, <, >= and >, is done different if the keys contain floating point numbers. OTP-12610 == erts == Scalability improvement for erlang:make_ref/0, and other functionality that create references. Each scheduler now manage its own set of references. By this no communication at all is needed when creating references. Previous implementation generated a strictly monotonically increasing sequence of references corresponding to creation time on the runtime system instance. This is not the case with current implementation. You can only expect reference to be unique. The Erlang/OTP documentation has never mentioned anything else but the uniqueness property, so this change is fully compatible. The only reason we've marked this as a potential incompatibility is since an early draft for an Erlang specification mentions strict monotonicity as a property. If you need to create data with a strict monotonicity property use erlang:unique_integer([monotonic]). Do not use the deprecated erlang:now(). --- otp ----------------------------------------------------------------- OTP-11306 The type identifier() is documented in the reference manual, in section Types and Function Specifications. OTP-12854 Change license text from Erlang Public License to Apache Public License v2 --- asn1-4.0 ------------------------------------------------------------ OTP-12395 Many bugs have been eliminated in the the ASN.1 compiler so that it can now successfully compile many more ASN.1 specifications. Error messages have also been improved. OTP-12765 The documentation for asn1ct:test/1,2,3 and asn1ct:value/2 has been updated with information about the limitations of the functions. --- common_test-1.11 ---------------------------------------------------- OTP-10446 Earlier there was no way to add optional parameters like default-operation to an edit-config request sent with ct_netconfc:edit_config/3,4, you had to use ct_netconfc:send_rpc/2,3. For simplicity and completion, a new optional argument, OptParams, is now added to the edit_config function. OTP-10816 The status of an aborted test due to test suite compilation error has changed from 'auto_skipped' to 'failed'. This affects both the textual log file, event handling and CT hook callbacks. The logging of compilation failures has also been improved, especially in the case of multiple test suites failing compilation. OTP-11962 When running OTP tests using the ts interface, it is now possible to specify so called test categories per OTP application. A test category is represented by a CT test specification and defines an arbitrary subset of existing test suites, groups and cases. Examples of test categories are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call ts:help() for more info). Also, functions for reading terms from the current test specification during test, ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have been implemented. OTP-12421 Obsolete scripts and make file operations have been removed and the installation chapter in the Common Test User's Guide has been updated. OTP-12678 The 'keep_alive' interval has been reduced to 8 seconds, which is two seconds shorter than the default 'idle_timeout' value for ct_telnet:expect/3. This way, the telnet server receives a NOP message (which might trigger an action) before the operation times out. Also the TCP option 'nodelay' has been enabled per default for all telnet connections, in order to reduce the risk for communication timeouts. OTP-12684 When the ct_run program is executed without any flags, "-dir ." is now used as default start flag. Similarly, the option {dir,"."} is used by ct:run_test/1 if called with an empty list. Also, the help text (ct_run -help) has been updated, as well as the Running Tests chapter in the Common Test User's Guide. OTP-12740 The Test Server source code parser (erl2html2) failed to handle the macro tuple in the syntax tree returned by epp_dodger. This error has been corrected. OTP-12809 New options to make it possible to specify ssh_port in a .spec file: [{node_start, [{ssh_port, 9999}]}]. And also to specify additional ssh options like paths to public-key files: [{node_start, [{ssh_opts, [{user_dir, "/home/shrek/e2/"}]}]}]. --- compiler-6.0 -------------------------------------------------------- OTP-11978 The cerl and cerl_trees modules in the compiler application are now documented. OTP-12100 The deprecated 'asm' option has been removed. OTP-12218 Support variables as Map keys in expressions and patterns Erlang will accept any expression as keys in Map expressions and it will accept literals or bound variables as keys in Map patterns. OTP-12253 Infer Map type information in beam_type compiler optimization pass. OTP-12393 Compiler optimizations have been improved. OTP-12453 The compiler optimizes away building of terms that are never actually used. As a result, the compiler in OTP 18 may produce more warnings for terms that are built but not used than the compiler in OTP 17. OTP-12497 Five undocumented functions in the module core_lib have been deprecated and will be removed in the next major release. The functions are: get_anno/{1,2}, is_literal/1, is_literal_list/1, and literal_value. Use the appropriate functions in the cerl module instead. OTP-12515 Using a map could incorrectly suppress warnings for unused variables. OTP-12723 The compiler now properly reports unknown parse transforms. That is, undef exceptions coming from the parse transform itself is reported differently from the absence of the parse transform. OTP-12758 Allow for 'creation of sub binary delayed' optimization if maps instructions are in a clause. OTP-12774 Change some internal data structures to Maps in order to speed up compilation time. Measured speed up is around 10%-15%. OTP-12844 Fix beam_bool pass for Maps instruction get_map_elements Before beam_split the get_map_elements instruction is still in blocks and the helper function in beam_jump did not reflect this. --- cosEvent-2.2 -------------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- cosEventDomain-1.2 -------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- cosFileTransfer-1.2 ------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- cosNotification-1.2 ------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- cosProperty-1.2 ----------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- cosTime-1.2 --------------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- cosTransactions-1.3 ------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- crypto-3.6 ---------------------------------------------------------- OTP-12380 Use the EVP API for AES-CBC crypto to enables the use of hardware acceleration for AES-CBC crypto on newer Intel CPUs (AES-NI), among other platforms. OTP-12394 Enhance crypto:generate_key to calculate ECC public keys from private key. OTP-12403 Add AES ECB block encryption. OTP-12733 Fix bug in crypto:generate_key for ecdh that could cause VM crash for faulty input. --- debugger-4.1 -------------------------------------------------------- OTP-12218 Support variables as Map keys in expressions and patterns Erlang will accept any expression as keys in Map expressions and it will accept literals or bound variables as keys in Map patterns. --- dialyzer-2.8 -------------------------------------------------------- OTP-10280 The -dialyzer() attribute can be used for suppressing warnings in a module by specifying functions or warning options. It can also be used for requesting warnings in a module. OTP-11445 The pre-defined types array(), dict(), digraph(), gb_set(), gb_tree(), queue(), set(), and tid() have been removed. OTP-11851 A few type names that have been used for representing certain predefined types can now be used for user-defined types. This affects the types product/_, union/_, and range/2 as well as tuple/N (N > 0), map/N (N > 0), atom/1, integer/1, binary/2, record/_, and 'fun'/_. A consequence is that, for example, it is no longer possible to refer to a record type with record(r); instead the usual record notation, #r{}, is to be used. OTP-11861 When implementing user-defined behaviours it is now possible to specify optional callback functions. See OTP Design Principles User's Guide, Sys and Proc_Lib, User-Defined Behaviours, for details. OTP-12350 The translation of Erlang forms to the type representation used by Dialyzer has been improved in several ways. The most important change is that deeply nested records can be handled. OTP-12493 Fix a bug that could cause bogus warnings for opaque types. In Erlang/OTP 18 two parameterized types declared in the same module always result in a contradiction (none()) when combined outside of the module where they are declared, unless they have the same number of parameters. The behaviour is different from Erlang/OTP 17 where, for instance, dict:dict() and dict:dict(_, _), which are both opaque, can be combined outside of the dict module. In Erlang/OTP 18, dict:dict() and dict:dict(_, _) can still be combined outside of the dict module. That has been made possible by not declaring dict:dict() as opaque. OTP-12637 Update the PLT properly when a module is changed. (Thanks to James Fish for the bug report, and to Stavros Aronis for fixing the bug.) OTP-12682 Add two options to the Dialyzer: no_missing_calls suppresses warnings about calls to missing or unexported functions; unknown lets warnings about unknown functions or types affect the exit status. See also dialyzer(3). OTP-12725 An argument of '*'/2 is not constraind if the other operand can be zero. OTP-12750 Mention the option check_plt among the dialyzer:gui() options. (Thanks to James Fish.) OTP-12779 By default, dialyzer will now cache native versions of dialyzer modules to avoid having to re-compile them each time dialyzer is started. Caching can be disabled using the option --no_native_cache. OTP-12826 Fix a bug which could cause an infinite loop in Dialyzer. --- diameter-1.10 ------------------------------------------------------- OTP-12721 Fix decode of Grouped AVPs containing errors. RFC 6733 says this of Failed-AVP in 7.5: -- In the case where the offending AVP is embedded within a Grouped AVP, the Failed-AVP MAY contain the grouped AVP, which in turn contains the single offending AVP. The same method MAY be employed if the grouped AVP itself is embedded in yet another grouped AVP and so on. In this case, the Failed-AVP MAY contain the grouped AVP hierarchy up to the single offending AVP. This enables the recipient to detect the location of the offending AVP when embedded in a group. It says this of DIAMETER_INVALID_AVP_LENGTH in 7.1.5: -- The request contained an AVP with an invalid length. A Diameter message indicating this error MUST include the offending AVPs within a Failed-AVP AVP. In cases where the erroneous AVP length value exceeds the message length or is less than the minimum AVP header length, it is sufficient to include the offending AVP header and a zero filled payload of the minimum required length for the payloads data type. If the AVP is a Grouped AVP, the Grouped AVP header with an empty payload would be sufficient to indicate the offending AVP. In the case where the offending AVP header cannot be fully decoded when the AVP length is less than the minimum AVP header length, it is sufficient to include an offending AVP header that is formulated by padding the incomplete AVP header with zero up to the minimum AVP header length. The AVPs placed in the errors field of a diameter_packet record are intended to be appropriate for inclusion in a Failed-AVP, but neither of the above paragraphs has been followed in the Grouped case: the entire faulty AVP (non-faulty components and all) has been included. This made it difficult to identify the actual faulty AVP in all but simple cases. The decode is now adapted to the RFC, and implements the suggested single faulty AVP, nested in as many Grouped containers as required. OTP-12768 Fix SCTP problems on Solaris. The allocation of association ids in Solaris was in conflict with an assumption made in diameter_sctp, resulting in failures when accepting multiple peer connections. OTP-12845 Change license text from Erlang Public License to Apache Public License v2 OTP-12851 Fix start order of alternate transports. A transport configured with diameter:add_transport/2 can be passed multiple transport_module/transport_config tuples in order to specify alternate configuration, modules being attempted in order until one succeeds. This is primarily for the connecting case; for example, to allow a transport to be configured to first attempt connection over SCTP, and then TCP in case SCTP fails. Multiple module tuples can be paired with a single config tuple, but in this case the start order was reversed relative to the order in which the modules were specifed. --- edoc-0.7.17 --------------------------------------------------------- OTP-12431 Remove functionality related to packages --- eldap-1.2 ----------------------------------------------------------- OTP-12282 Support added for LDAP Password Modify Extended Operation (RFC 3062). Thanks to danielwhite. --- erl_docgen-0.4 ------------------------------------------------------ OTP-12722 Add possibility to add extra information on documentation front pages. --- erl_interface-3.8 --------------------------------------------------- OTP-12801 Do not accept Nan and Infinity values Erlang does not accept these values, so we return an error in the C interface rather than letting them through to the Erlang VM, which rejects the message with a somewhat cryptic "bad external term". --- erts-7.0 ------------------------------------------------------------ OTP-11905 Fix issuing with spaces and quoting in the arguments when using erlang:open_port spawn_executable on windows. The behavior now mimics how unix works. This change implies a backwards incompatibility for how spawn_executable works on windows. OTP-11939 Fix global call trace when hipe compiled code call beam compiled functions. Tracing of beam functions should now alway work regardless who the caller is. OTP-11940 Add md5 and module entries to ?MODULE:module_info/0/1 and remove obsolete entry 'import'. OTP-11941 Debug function erlang:display/1 shows content of binaries and bitstrings, not only the length. OTP-11974 Correct cache alignment for ETS write_concurrency locks to improve performance by reduced false sharing. May increase memory footprint for tables with write_concurrency. OTP-11997 The time functionality of Erlang has been extended. This both includes a new API for time, as well as time warp modes which alters the behavior of the system when system time changes. You are strongly encouraged to use the new API instead of the old API based on erlang:now/0. erlang:now/0 has been deprecated since it is and forever will be a scalability bottleneck. For more information see the Time and Time Correction chapter of the ERTS User's Guide. Besides the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made internally in the runtime system. Examples of such improvements are scheduler specific timer wheels, scheduler specific BIF timer management, parallel retrieval of monotonic time and system time on systems with primitives that are not buggy. OTP-12099 erlang:function_exported(M, F, A) will now return true if M:F/A refers to a BIF. OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with the process dictionary. Note: erlang:get_keys/0 is auto-imported. OTP-12232 Make distributed send of large messages yield to improve real-time characteristics. OTP-12236 Use high accuracy poll timeouts Where available, use poll/select API's that can handle time resolutions less than 1ms. In the cases where such API's are not available the timeout is rounded up to the nearest ms. OTP-12239 All possibly blocking operations in the fd/spawn and terminal driver have been converted to non-blocking operations. Before this fix it was possible for the VM to be blocked for a long time if the entity consuming stdout/stderr did not consume it fast enough. OTP-12240 The internal group to user_drv protocol has been changed to be synchronous in order to guarantee that output sent to a process implementing the user_drv protocol is printed before replying. This protocol is used by the standard_output device and the ssh application when acting as a client. This change changes the previous unlimited buffer when printing to standard_io and other devices that end up in user_drv to 1KB. OTP-12254 The previously introduced "eager check I/O" feature is now enabled by default. Eager check I/O can be disabled using the erl command line argument: +secio false Characteristics impact compared to previous default: -- Lower latency and smoother management of externally triggered I/O operations. -- A slightly reduced priority of externally triggered I/O operations. OTP-12270 Properly support maps in match_specs OTP-12292 The notice that a crashdump has been written has been moved to be printed before the crashdump is generated instead of afterwords. The wording of the notice has also been changed. OTP-12309 New function ets:take/2. Works the same as ets:delete/2 but also returns the deleted object(s). OTP-12366 Tracing with cpu_timestamp option has been enabled on Linux. OTP-12376 ets:info/1,2 now contains information about whether write_concurrency or read_concurrency is enabled. OTP-12377 Crashdumps have been expanded to include: -- Stack trace of currently running process (including processes that are being garbage collected) -- Data about the state of the erts schedulers -- Extended statistics about ets tables of the types; set, bag or dublicate_bag. -- All configurable options for ets tables For more detailed information see How to interpret the Erlang crash dumps in the ERTS User's Guide. OTP-12383 Improved usage of gcc's builtins for atomic memory access. These are used when no other implementation of atomic memory operations is available. For example, when compiling for ARM when libatomic_ops is not available. The largest improvement will be seen when compiling with a gcc with support for the __atomic_* builtins (using a gcc of at least version 4.7), but also when only the legacy __sync_* builtins are available (using a gcc of at least version 4.1) an improvement can be seen. For more information see the "Atomic Memory Operations and the VM" section of $ERL_TOP/HOWTO/INSTALL.md. OTP-12411 Introduce math:log2/1 function to math module. OTP-12492 The documentation of the Abstract Format (in the ERTS User's Guide) has been updated with types and specification. (Thanks to Anthony Ramine.) The explicit representation of parentheses used in types of the abstract format has been removed. Instead the new functions erl_parse:type_inop_prec() and erl_parse:type_preop_prec() can be used for inserting parentheses where needed. OTP-12508 Remove perfctr support Development of perfctr in the linux kernel ceased in 2010. The perfctr support code in the Erlang VM is thus effectively dead code and therefor removed. OTP-12548 zlib:inflateChunk/2 has been added. It works like zlib:inflate/2, but decompresses no more data than will fit in the buffer configured by zlib:setBufSize/2. OTP-12554 Add missing overhead for offheap binaries created from external format. This fix can improve the garbage collection of large binaries originating from binary_to_term or messages from remote nodes. OTP-12555 Use linear search for small select_val arrays OTP-12563 New BIF ets:update_counter/4 with a default object as argument, which will be inserted in the table if the key was not found. OTP-12584 Export missing types from zlib module OTP-12585 Use persistent hashmaps for large Maps Maps will use a persistent hashmap implementation when the number of pairs in a Map becomes sufficiently large. The change will occur when a Map reaches 33 pairs in size but this limit might change in the future. The most significant impact for the user by this change is speed, and to a lesser degree memory consumption and introspection of Maps. Memory consumption size is probalistic but lesser than gb_trees or dict for instance. Any other impacts will be transparent for the user except for the following changes. Semantics of Maps have changed in two incompatible ways compared to the experimental implementation in OTP 17: -- Hashing of maps is done different by erlang:phash2/1,2, erlang:phash/1 and erlang:hash/2. -- Comparing two maps with ==, /=, =<, <, >= and >, is done different if the keys contain floating point numbers. OTP-12610 Scalability improvement for erlang:make_ref/0, and other functionality that create references. Each scheduler now manage its own set of references. By this no communication at all is needed when creating references. Previous implementation generated a strictly monotonically increasing sequence of references corresponding to creation time on the runtime system instance. This is not the case with current implementation. You can only expect reference to be unique. The Erlang/OTP documentation has never mentioned anything else but the uniqueness property, so this change is fully compatible. The only reason we've marked this as a potential incompatibility is since an early draft for an Erlang specification mentions strict monotonicity as a property. If you need to create data with a strict monotonicity property use erlang:unique_integer([monotonic]). Do not use the deprecated erlang:now(). OTP-12613 Enable different abort signal from heart By using environment variable HEART_KILL_SIGNAL, heart can now use a different signal to kill the old running Erlang. By default the signal is SIGKILL but SIGABRT may also be used by setting environment variable: HEART_KILL_SIGNAL=SIGABRT OTP-12641 Ensure hashing of zero is consistent Erlang treats positive and negative zero as equal: true = 0.0 =:= 0.0/-1 However, Erlangs hash functions: hash, phash and phash2 did not reflect this behaviour. The hash values produced by the different hash functions would not be identical for positive and negative zero. This change ensures that hash value of positive zero is always produced regardless of the signedness of the zero float, i.e., true = erlang:phash2(0.0) =:= erlang:phash2(0.0/-1) OTP-12646 Update autconf to latest version 2015-03-04 OTP-12650 Optimization of timers internally in the VM. This include process timers (receive ... after), port timers (driver_set_timer()) as well as BIF timers (erlang:send_after()/erlang:start_timer()). Each scheduler thread now has its own lock-free timer service instead of one locked central service. This dramatically improves performance of timer management on systems with a large amount of schedulers and timers. The timer service internal data structure has also been optimized to be able to handle more timers than before. That is, each timer service is by its self able to handle more timers without dramatic performance loss than the old centralized timer service. The API of BIF timers has also been extended. Timeout values are for example no longer limited to 32-bit integers. For more information see the documentation of erlang:start_timer/4, erlang:send_after/4, erlang:cancel_timer/2, and erlang:read_timer/2. Characteristics impact: Calls to the synchronous versions of erlang:cancel_timer(), and erlang:read_timer() may take substantially longer time to complete than before. This occur when the timer that is accessed is managed by a remote scheduler. You typically want to use the new asynchronous option in order to avoid blocking the calling process. OTP-12655 Ensure NIF term creation disallows illegal floating point values and too long atoms. Such values will cause a NIF to throw badarg exception when it returns. OTP-12656 Fixed building of Map results from match_specs A faulty "box-value" entered into the heap which could cause a segmentation fault in the garbage collector if it was written on a heap fragment. OTP-12667 Fix hipe bug when matching a "writable" binary. The bug has been seen to sometimes cause a failed binary matching of a correct utf8 character, but other symptoms are also possible. OTP-12685 Keep dirty schedulers from waking other schedulers. OTP-12690 Specialize instructions from common assembler patterns Specialize common instructions of rem, band, minus and plus in the beam loader. This will reduce the number of fetches and thus lessen the instruction dispatch pressure during runtime and speed up those operations in some common cases. Specialize move patterns from x-registers to the stack with a new move_window instruction. This change will reduce instruction dispatch pressure. OTP-12693 Fix cross compilation for Android. OTP-12706 Fix incorrect use of autoconf macro AC_EGREP_CPP, which could cause faulty configuration if run from a path containing the string 'yes'. OTP-12715 Minimal Java version is now 1.6 OTP-12717 Disable floating point exceptions if the VM is compiled by clang/llvm. This is a known long-standing problem in clang/llvm. OTP-12720 Fix bug in file:sendfile for FreeBSD causing not the entire file to be sent. OTP-12735 Send format and args on process exit to error_logger Previously, the emulator would generate a whole string with values and call the error_logger passing "~s~n". This changes it to a format string containing ~p with the respective values as arguments. OTP-12751 Fix the broken Android support in erl_child_setup.c OTP-12755 Map error logger warnings to warning messages by default. OTP-12761 Configure architecture ppc64le architecture as a ppc64 OTP-12766 Faulty statistics reported by the fix_alloc allocator. OTP-12770 Add function enif_raise_exception to allow a NIF to raise an error exception with any type of reason. OTP-12771 Fix two erts_snprintf() calls to correct sizes. - run_erl.c (ose): Use the size of the signal type, not its pointer. - erl_node_tables.c: Use the size of the _BUFFER in erts_snprintf() to make sure we can use the full space. OTP-12777 Optimized node table statistics retrieval. OTP-12781 Map beam error logger warnings to warning messages by default. Previously these messages were mapped to the error channel by default. OTP-12797 gen_tcp:shutdown/2 is now asynchronous This solves the following problems with the old implementation: It doesn't block when the TCP peer is idle or slow. This is the expected behaviour when shutdown() is called: the caller needs to be able to continue reading from the socket, not be prevented from doing so. It doesn't truncate the output. The current version of gen_tcp:shutdown/2 will truncate any outbound data in the driver queue after about 10 seconds if the TCP peer is idle of slow. Worse yet, it doesn't even inform anyone that the data has been truncated: 'ok' is returned to the caller; and a FIN rather than an RST is sent to the TCP peer. OTP-12802 Introduced delayed node table GC. This in order to avoid oscillation of entries in and out of the tables. The oscillation caused unnecessary lock contention on the table locks. The delay length can be set by passing the +zdntgc command line argument. Characteristics impact: The tables can grow to very large sizes with unused entries if the node is get huge amounts of short lived connections from other nodes. This problem can be alleviated by shortening the length of the delay using the +zdntgc command line argument. OTP-12812 Delayed memory allocations could be delayed an unnecessarily long time. OTP-12817 Make sure that timeouts on a pool of acceptors are released in the correct order. OTP-12820 Fix segmentation fault in module_info for deleted modules OTP-12821 Fix garbage collection of literals in code purge During code purging and check_process_code, the checking of the binary reference embedded in the match binary state was omitted for the tracing tests. This would cause the binary match state to reference deallocated memory. OTP-12840 A bug has been corrected for gen_tcp:close so when {linger,{true,0}} is in effect it does not wait for data in the driver queue to transfer out before closing the port. Bug fix by Rory Byrne. OTP-12842 Improved implementation of erlang:statistics(io) in order to reduce contention between schedulers. Characteristics impact: The actual call to erlang:statistics(io) takes longer time to complete, but the overall impact on the system is improved. OTP-12843 There are many cases where user code needs to be able to distinguish between a socket that was closed normally and one that was aborted. Setting the option {show_econnreset, true} enables the user to receive ECONNRESET errors on both active and passive sockets. OTP-12849 Do not preallocate too large event pool A default pool size of 4000 is too excessive for the common case. This corresponds directly to the number of threads in the system. Change ERTS_TS_EV_ALLOC_DEFAULT_POOL_SIZE to 2048. Change ERTS_TS_EV_ALLOC_POOL_SIZE to 32. OTP-12855 The documentation of the driver callback start() erroneously stated that a return value of ERL_DRV_ERROR_ERRNO caused the error value to be passed via erl_errno when it should have been errno. --- et-1.5.1 ------------------------------------------------------------ OTP-12780 The et application must continue to use erlang:now/0 in order to obtain timestamps that are consistent with timestamps obtained from tracing. The application has been updated to suppress the warning for erlang:now/0. --- eunit-2.2.10 -------------------------------------------------------- OTP-11660 The eunit application is now unicode safe. --- gs-1.6 -------------------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- hipe-3.12 ----------------------------------------------------------- OTP-12666 Fix a minor bug in the handling of opaque types. OTP-12667 Fix hipe bug when matching a "writable" binary. The bug has been seen to sometimes cause a failed binary matching of a correct utf8 character, but other symptoms are also possible. OTP-12794 Allow use of complete interface of cerl_pmatch module OTP-12816 Optimizations and code cleanup in hipe code loader. --- ic-4.4 -------------------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- inets-6.0 ----------------------------------------------------------- OTP-11845 Fix race condition in httpc. If the socket is closed by the peer do not try to close it again. OTP-12156 Remove Server Side Include support from inets, as this is an old technic that has security issues and was not well tested. OTP-12362 Avoid process leak by gracefully terminating httpc request handler process when send operation fails. OTP-12674 To enable the HTTP server to run in a virtualized environment, where there can be more that one server that has the same ip-address and port, we add a new option profile. OTP-12798 Let gen_tcp:controlling_process/2 and inet_sctp:connect/[45] propagate prim_inet:setopt/3 errors instead of having them generate badmatch exceptions. OTP-12803 httpc: Fix implementation of gracefull shudown to work as intended for keep alive connections not using pipelining. OTP-12822 Correct handling of proxy options when using persistent connections. --- jinterface-1.6 ------------------------------------------------------ OTP-12333 Reformat the sources for JInterface uniformly and according to the standard Java style guidelines. Provide description of the rules applied in Eclipse format (for other editors one can check the settings against these). In short, the formatting style is: * indentation uses only spaces; each level is 4 positions * no trailing whitespace * mostly default Java style formatting (any difference is minor) * always use {} blocks * use 'final' as much as possible OTP-12686 Add basic transport factory implementation. This makes possible creating connections between nodes using ssh channels for example. OTP-12691 Add Jinterface generic match and bind methods to provide low level interface base methods sufficient for variety of higher level pattern matching/variable binding implementations. OTP-12715 Minimal Java version is now 1.6 OTP-12746 Remove extra @param in javadoc as this gives an error when building the docs in java 1.8 --- kernel-4.0 ---------------------------------------------------------- OTP-12144 Fix error handling in file:read_line/1 for Unicode contents. OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with the process dictionary. Note: erlang:get_keys/0 is auto-imported. OTP-12240 The internal group to user_drv protocol has been changed to be synchronous in order to guarantee that output sent to a process implementing the user_drv protocol is printed before replying. This protocol is used by the standard_output device and the ssh application when acting as a client. This change changes the previous unlimited buffer when printing to standard_io and other devices that end up in user_drv to 1KB. OTP-12342 Introduce os:getenv/2 which is similar to os:getenv/1 but returns the passed default value if the required environment variable is undefined. OTP-12564 The inflateInit/2 and deflateInit/6 functions now accepts a WindowBits argument equal to 8 and -8. OTP-12673 It is now possible to paste text in JCL mode (using Ctrl-Y) that has been copied in the previous shell session. Also a bug that caused the JCL mode to crash when pasting text has been fixed. OTP-12755 Map error logger warnings to warning messages by default. OTP-12773 Ensure that each segment of an IPv6 address when parsed from a string has a maximum of 4 hex digits OTP-12781 Map beam error logger warnings to warning messages by default. Previously these messages were mapped to the error channel by default. OTP-12797 gen_tcp:shutdown/2 is now asynchronous This solves the following problems with the old implementation: It doesn't block when the TCP peer is idle or slow. This is the expected behaviour when shutdown() is called: the caller needs to be able to continue reading from the socket, not be prevented from doing so. It doesn't truncate the output. The current version of gen_tcp:shutdown/2 will truncate any outbound data in the driver queue after about 10 seconds if the TCP peer is idle of slow. Worse yet, it doesn't even inform anyone that the data has been truncated: 'ok' is returned to the caller; and a FIN rather than an RST is sent to the TCP peer. OTP-12843 There are many cases where user code needs to be able to distinguish between a socket that was closed normally and one that was aborted. Setting the option {show_econnreset, true} enables the user to receive ECONNRESET errors on both active and passive sockets. --- megaco-3.18 --------------------------------------------------------- OTP-12762 The runtime dependencies in the application resource file have been updated. --- mnesia-4.13 --------------------------------------------------------- OTP-12481 Make Mnesia DCD dump behavior at start up optional, when turned off mnesia loads large disc_copies tables faster. OTP-12714 Mnesia's dirty functions did not always exit with {aborted, Reason} as documented when an error occurred. OTP-12807 Consider file descriptors limits (emfile) as a fatal error and do not delete log files. Previously the error was seen as a corrupted disk and the log files deleted which caused data loss. --- observer-2.1 -------------------------------------------------------- OTP-12363 Added display of new crashdump information available in crashdumps from Erlang/OTP 18. OTP-12401 Show run queue status in crashdump viewer. OTP-12504 Added the possibility to view sasl log entries for processes. OTP-12631 Add memory allocator usage and utilization graphs. OTP-12819 Don't refresh observer table view if there was no change --- odbc-2.11 ----------------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- orber-3.8 ----------------------------------------------------------- OTP-12687 Remove the usage of erlang:now() from all Corba applications and use the new rand module instead of random. --- os_mon-2.4 ---------------------------------------------------------- OTP-12730 cpu_sup should use native sysctl/libkvm calls on BSD This avoids forking off with os:cmd every time we just want to collect the load averages. riak does this every second, which results in a lot of unnecessary load. OTP-12796 Implement native cpu_sup:util/0,1 for FreeBSD --- ose-1.1 ------------------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- otp_mibs-1.1 -------------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- parsetools-2.1 ------------------------------------------------------ OTP-12271 The new -dialyzer() attribute is used for suppressing Dialyzer warnings in generated code. --- percept-0.8.11 ------------------------------------------------------ OTP-12662 Fix http server configuration --- public_key-1.0 ------------------------------------------------------ OTP-12110 public_key: Remove legacy switch compact_bit_string E.i bitstrings will not be decode as {Unused, Binary}, they are now Erlang bitstrings. Also the compact_bit_string implies the legacy_erlang_types switch So removing the switch will also make OCTET STRING values be represented as binaries. Undecoded open type will now be wrapped in a asn1_OPENTYPE tuple. This will change some values in records returned by the public_key API making this change a potentiall incompatibility. --- reltool-0.7 --------------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- runtime_tools-1.9 --------------------------------------------------- OTP-12845 Change license text from Erlang Public License to Apache Public License v2 --- sasl-2.5 ------------------------------------------------------------ OTP-11540 The undocumented upgrade instruction {remove_module,PrePurge,PostPurge,DepMods} is removed. This instruction was added for symmetry reasons in OTP R7B, but was never documented or tested. The existing instruction {add_module,Mod,DepMods} is now documented, and the complementing instruction {delete_module,Mod,DepMods} is added. OTP-12778 The sasl_error_logger configuration parameter now supports the value {file,FileName,Modes} which allows the log file to be opened in other mode than write (for example, append mode). --- snmp-5.2 ------------------------------------------------------------ OTP-12762 The runtime dependencies in the application resource file have been updated. --- ssh-4.0 ------------------------------------------------------------- OTP-11697 Better usage of binary matching in ssh_auth.erl and ssh_message.erl OTP-12029 A new option 'preferred_algorithms' is available for ssh:daemon and ssh:connect. This option defines the algorithms presented to the peer in the algorithm negotiation phase of the ssh protocol. The default list can be obtained from the new function ssh:default_algorithms/0. OTP-12240 The internal group to user_drv protocol has been changed to be synchronous in order to guarantee that output sent to a process implementing the user_drv protocol is printed before replying. This protocol is used by the standard_output device and the ssh application when acting as a client. This change changes the previous unlimited buffer when printing to standard_io and other devices that end up in user_drv to 1KB. OTP-12648 If ssh_connection:subsystem/4 fails we terminates gracefully. OTP-12649 Included test of the 'e' and 'f' parameters in diffie-hellman key exchange as specified in rfc 4253 section 8. OTP-12675 To enable the ssh daemon to run in a virtualized environment, where there can be more that one server that has the same ip-address and port, we add a new option profile. OTP-12676 Upgrade test suite added. OTP-12692 Fixes the bug that once the rekey_limit bytes (by default, 1GB) had been transmitted the connection was rekeyed every minute, not after the next transferred 'rekey_limit' chunk. Thanks to Simon Cornish for the report and the fix! OTP-12708 Fixes a bug that causes an SFTP connection to always fail when {timeout, Timeout} option is used with ssh_sftp:start_channel. Thanks to Simon Cornish OTP-12760 Fix various ssh key exchange problems. Thanks to Simon Cornish OTP-12786 Testcase improvements and corrections: * Add testcases for the disconnectfun option on both server and client sides * Timeout testcases adjusted for slow machines where they sometimes failed OTP-12788 The options system_dir and user_dir assumes that the value is a path to a directory which is readable. This is now checked early, so ssh:daemon and ssh:connect will fail with an error message immediately. OTP-12789 The option disconnectfun can now be used both on the client and server side. OTP-12790 A daemon now checks that a client doesn't try to authorize with methods not in the option auth_methods. OTP-12811 Disconnectfun now triggers on all disconnects. OTP-12813 A new option unknown_msgfun/2 for ssh:connect and ssh:daemon for handling unknown messages. With the option it is possible to intercept before an INFO log message is generated. One usage is to filter out messages that are not wanted in the error logger as info reports. An example of such a message is the 'etimedout' tcp error message that will be received if a connection has keep_alive and the peer is restarted. --- ssl-7.0 ------------------------------------------------------------- OTP-10362 Add new API functions to handle CRL-verification OTP-12390 Remove default support for SSL-3.0, due to Poodle vunrability in protocol specification. Add padding check for TLS-1.0 to remove Poodle vunrability from TLS 1.0, also add the option padding_check. This option only affects TLS-1.0 connections and if set to false it disables the block cipher padding check to be able to interoperate with legacy software. Remove default support for RC4 cipher suites, as they are consider too weak. OTP-12580 Add support for TLS ALPN (Application-Layer Protocol Negotiation) extension. OTP-12670 Ignore signature_algorithm (TLS 1.2 extension) sent to TLS 1.0 or TLS 1.1 server OTP-12736 Add SNI (Server Name Indication) support for the server side. OTP-12799 Improve error handling in TLS distribution module to avoid lingering sockets. OTP-12815 Add option {client_renegotiation, boolean()} option to the server-side of the SSL application. OTP-12829 Gracefully ignore proprietary hash_sign algorithms --- stdlib-2.5 ---------------------------------------------------------- OTP-11043 Allow maps for supervisor flags and child specs Earlier, supervisor flags and child specs were given as tuples. While this is kept for backwards compatibility, it is now also allowed to give these parameters as maps, see sup_flags and child_spec. OTP-11173 A new system message, terminate, is added. This can be sent with sys:terminate/2,3. If the receiving process handles system messages properly it will terminate shortly after receiving this message. The new function proc_lib:stop/1,3 utilizes this new system message and monitors the receiving process in order to facilitate a synchronous stop mechanism for 'special processes'. proc_lib:stop/1,3 is used by the following functions: -- gen_server:stop/1,3 (new) -- gen_fsm:stop/1,3 (new) -- gen_event:stop/1,3 (modified to be synchronous) -- wx_object:stop/1,3 (new) OTP-11907 Remove the pg module, which has been deprecated through OTP-17, is now removed from the STDLIB application. This module has been marked experimental for more than 15 years, and has largely been superseded by the pg2 module from the Kernel application. OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with the process dictionary. Note: erlang:get_keys/0 is auto-imported. OTP-12158 Fix handling of single dot in filename:join/2 The reference manual says that filename:join(A,B) is equivalent to filename:join([A,B]). In some rare cases this turns out not to be true. For example: filename:join("/a/.","b") -> "/a/./b" vs filename:join(["/a/.","b"]) -> "/a/b". This has been corrected. A single dot is now only kept if it occurs at the very beginning or the very end of the resulting path. OTP-12167 Add three new functions to io_lib-- scan_format/2, unscan_format/1, and build_text/1-- which expose the parsed form of the format control sequences to make it possible to easily modify or filter the input to io_lib:format/2. This can e.g. be used in order to replace unbounded-size control sequences like ~w or ~p with corresponding depth-limited ~W and ~P before doing the actual formatting. OTP-12183 The undocumented option generic_debug for gen_server has been removed. OTP-12186 erl_lint:icrt_export/4 has been rewritten to make the code really follow the scoping rules of Erlang, and not just in most situations by accident. OTP-12195 Introduce the erl_anno module, an abstraction of the second element of tokens and tuples in the abstract format. OTP-12218 Support variables as Map keys in expressions and patterns Erlang will accept any expression as keys in Map expressions and it will accept literals or bound variables as keys in Map patterns. OTP-12257 The last traces of Mnemosyne Rules have been removed. OTP-12270 Properly support maps in match_specs OTP-12301 Add 'trim_all' option to binary:split/3 This option can be set to remove _ALL_ empty parts of the result of a call to binary:split/3. OTP-12309 New function ets:take/2. Works the same as ets:delete/2 but also returns the deleted object(s). OTP-12376 ets:info/1,2 now contains information about whether write_concurrency or read_concurrency is enabled. OTP-12422 string:tokens/2 is somewhat faster, especially if the list of separators only contains one separator character. OTP-12492 The documentation of the Abstract Format (in the ERTS User's Guide) has been updated with types and specification. (Thanks to Anthony Ramine.) The explicit representation of parentheses used in types of the abstract format has been removed. Instead the new functions erl_parse:type_inop_prec() and erl_parse:type_preop_prec() can be used for inserting parentheses where needed. OTP-12566 Prevent zip:zip_open/[12] from leaking file descriptors if parent process dies. OTP-12586 Add a new random number generator, see rand module. It have better characteristics and an improved interface. OTP-12651 Correct orddict(3) regarding evaluation order of fold() and map(). OTP-12657 Correct maps module error exceptions Bad input to maps module function will now yield the following exceptions: -- {badmap,NotMap} or, -- badarg OTP-12673 It is now possible to paste text in JCL mode (using Ctrl-Y) that has been copied in the previous shell session. Also a bug that caused the JCL mode to crash when pasting text has been fixed. OTP-12716 filename:split/1 when given an empty binary will now return an empty list, to make it consistent with return value when given an empty list. OTP-12737 Add sync option to ets:tab2file/3. OTP-12742 Add functions gb_sets:iterator_from() and gb_trees:iterator_from(). (Thanks to Kirill Kinduk.) OTP-12745 Add maps:filter/2 to maps module. OTP-12752 Add uptime() shell command. OTP-12754 Cache nowarn_bif_clash functions in erl_lint. This patch stores nowarn_bif_clash in the lint record. By using erlc +'{eprof,lint_module}' when compiling the erlang parser, we noticed the time spent on nowarn_function/2 reduced from 30% to 0.01%. OTP-12772 Optimize the Erlang Code Linter by using the cached filename information. OTP-12774 Change some internal data structures to Maps in order to speed up compilation time. Measured speed up is around 10%-15%. OTP-12785 Update orddict to use parameterized types and specs. (Thanks to UENISHI Kota.) OTP-12793 If a child of a simple_one_for_one returns ignore from its start function no longer store the child for any restart type. It is not possible to restart or delete the child because the supervisor is a simple_one_for_one. OTP-12808 The assert macros in eunit has been moved out to stdlib/include/assert.hrl. This files get included by eunit.hrl. Thus, nothing changes for eunit users, but the asserts can now also be included separately. OTP-12814 Make ets:file2tab preserve enabled read_concurrency and write_concurrency options for tables. OTP-12841 There are many cases where user code needs to be able to distinguish between a socket that was closed normally and one that was aborted. Setting the option {show_econnreset, true} enables the user to receive ECONNRESET errors on both active and passive sockets. --- syntax_tools-1.7 ---------------------------------------------------- OTP-12732 Use the new erl_anno module. OTP-12769 The merl module has been added to the syntax_tools application. The Merl library is a simpler way to work with erl_syntax parse trees. --- test_server-3.9 ----------------------------------------------------- OTP-10816 The status of an aborted test due to test suite compilation error has changed from 'auto_skipped' to 'failed'. This affects both the textual log file, event handling and CT hook callbacks. The logging of compilation failures has also been improved, especially in the case of multiple test suites failing compilation. OTP-10923 The Test Server application has been marked as obsolete and will be removed from OTP in the next major release (OTP 19.0). OTP-11962 When running OTP tests using the ts interface, it is now possible to specify so called test categories per OTP application. A test category is represented by a CT test specification and defines an arbitrary subset of existing test suites, groups and cases. Examples of test categories are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call ts:help() for more info). Also, functions for reading terms from the current test specification during test, ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have been implemented. OTP-12740 The Test Server source code parser (erl2html2) failed to handle the macro tuple in the syntax tree returned by epp_dodger. This error has been corrected. --- tools-2.8 ----------------------------------------------------------- OTP-11043 Allow maps for supervisor flags and child specs Earlier, supervisor flags and child specs were given as tuples. While this is kept for backwards compatibility, it is now also allowed to give these parameters as maps, see sup_flags and child_spec. OTP-12330 In order to improve performance of the cover tool, new functions are added for cover compilation and analysis on multiple files. This allows for more parallelisation. Some improvements of the data base access is also done in order to improve the performance when analysing and resetting cover data. Minor incompatibility: An error reason from analyse_to_file is changed from no_source_code_found to {no_source_code_found,Module}. OTP-12511 Remove Mnemosyne rules support. OTP-12681 Add printout of total number of calls and time in eprof OTP-12806 Attempting to do a cover analysis when neither source code nor beam file could be found would hang the cover server. Corrected to return a proper error. --- typer-0.9.9 --------------------------------------------------------- OTP-12727 Properly extract annotations from core code. --- webtool-0.9 --------------------------------------------------------- OTP-10922 The Webtool application has been marked as obsolete and will be removed from OTP in the next major release (OTP 19.0). --- wx-1.4 -------------------------------------------------------------- OTP-12183 The undocumented option generic_debug for gen_server has been removed. OTP-12632 Use wxWidgets-3.0, if found, as default backend on windows. OTP-12660 Add missing fields in some events records. May require a recompilation of user applications. OTP-12734 Remove raise condition where wx could crash during emulator stoppage. --- xmerl-1.3.8 --------------------------------------------------------- OTP-12689 Remove compiler warnings in xmerl. --- Open Source Contributors -------------------------------------------- Alex Wilson, Andras Horvath, Andreas Amsenius, Andreas Schultz, András Veres-Szentkirályi, Anthony Ramine, Breno Leitao, Chris Dituri, Christopher Faulet, Daniel White, David Kubecka, David N. Welton, Derek Brown, Dmitriy Kargapolov, Dmitry Ivanov, Fred Hebert, Holger Weiß, James Fish, Jesper Louis Andersen, Johan Oudinet, Jonas Falkevik, José Valim, Jérôme de Bretagne, Kenji Rikitake, Kirill Zaborsky, Kirilll Zaborsky, Kostis Sagonas, Larry, Leo Liu, Loïc Hoguin, Magnus Henoch, Magnus Ottenklinger, Marc Sugiyama, Martin Hässler, Martin Schürrer, Maxim Mai, Michael Klishin, Mikael Pettersson, Nate Bartley, Nick Mills, Olivier Girondel, Peter Lemenkov, Péter Gömöri, Qijiang Fan, Richard Carlsson, Rory Byrne, Serge Aleynikov, Simon Cornish, Stavros Aronis, Stefan Grundmann, Steve Vinoski, Tom Briden, Tomas Abrahamsson, Tuncer Ayaz, UENISHI Kota, Ulf Wiger, Vlad Dumitrescu, Wasif Malik, Wasif Malik and Johannes Huning, Yoshihiro Tanaka, Yuki Ito, andreaP, beaver, crownedgrouse, jeffweiss, larry, tmanevik, xsipewe, Сергей Прохоров