%CopyrightBegin% Copyright Ericsson AB 1999-2016. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. %CopyrightEnd% -------------------------------------------------------------------------------- The original JAM emulator was first implemented by Mike Williams (the instruction set was argued out with Joe Armstrong). The original BEAM emulator and loader were first implemented by Bogumil Hausman. They were completely rewritten by Björn Gustavsson. Over the years the emulator has been basically completely rewritten by a large number of individuals. Most(?) notably Claes Wikström, Tony Rogvall, Björn Gustavsson, Patrik Nyblom, Rickard Green, Raimo Niskanen and Arndt Jonasson. Marcus Arendt did the original port for Windows NT. Most of this code was rewritten by Björn Gustavsson, Patrik Nyblom, Kenneth Lundin, Fredrik Tillman and Mattias Nilsson. Per Hedeland did the original port for VxWorks. This port was improved by Peter Högfeldt, Patrik Nyblom and Patrik Winroth. Mikael Pettersson, of the HiPE project, designed and implemented the new 2-bit tag scheme. The SMP support has mainly been designed and implemented by Rickard Green, Tony Rogvall (mostly ets), Mikael Pettersson (mostly optimized synchronization primitives, and timer thread), and Patrik Nyblom (mostly dynamic drivers, and Windows port). Also Björn Gustavsson and Raimo Niskanen have contributed. There are also a lot of people who have contributed smaller (and bigger) things to the emulator and runtime system: Per Hedeland, Peter Högfeldt, Kenneth Lundin, Fredrik Tillman, Mattias Nilsson, Kent Boortz, Markus Torpvret, Jan-Erik Dahlin, Sebastian Strollo and perhaps more... Björn Gustavsson (mostly matching) and Arndt Jonasson (mostly construction) implemented the bit syntax instructions, borrowing some code from the original prototype implementation by Tony Rogvall and Claes Wikström. The HiPE project (Kostis Sagonas, Mikael Petterson, Erik Johansson, Richard Carlsson, Ulf Magnusson, Jesper Wilhelmsson) added the hipe runtime to the Beam emulator. Björn Gustavsson helped to integrate the hipe runtime. Rickard Green has designed and implemented the erts_alloc framework and memory allocators. Per Gustafsson (and perhaps others in the HiPE group) come up with idea for bit-level binaries and binary comprehensions. Per Gustafsson and Björn Gustavsson implemented them in the BEAM compiler and run-time system. Björn Gustavsson implemented the new optimizations for matching and appending of binaries in BEAM compiler and run-time system, while Per Gustafsson implemented the optimizations in the HiPE compiler and HiPE run-time system. The big heap-fragment-elimination project has been going on for many years and several releases, and was finally finished in R12B. Suggested by the HiPE group in order to support constant pools and possible future GC improvements, most of the work was carried out by Björn Gustavsson, with help from Mikael Pettersson and the HiPE group. Original Authors and Contributors: Mike Williams Joe Armstrong Bogumil Hausman Björn Gustavsson Claes Wikström Tony Rogvall Patrik Nyblom Rickard Green Raimo Niskanen Arndt Jonasson Marcus Arendt Kenneth Lundin Fredrik Tillman Mattias Nilsson Per Hedeland Peter Högfeldt Patrik Winroth Mikael Pettersson Kent Boortz Markus Torpvret Jan-Erik Dahlin Sebastian Strollo Kostis Sagonis Erik Johansson Richard Carlsson Ulf Magnusson Jesper Wilhelmsson Jakob Cederlund Magnus Fröberg Per Gustafsson Björn-Egil Dahlberg Open Source Contributors: Mick Dwyer Geoff Wong Maurice Castro Luke Gorrie Shawn Pearce Ruslan Shevchenko Tony Rogvall (at Bluetail): New faster inet_drv (R7) HTTP packet mode (R8) Sebastian Strollo (at Bluetail): poll() as alternative to select() Mikael Pettersson (HiPE) Leonid Timochouk and Serge Aleynikov then (2006) at IDT Corp. Wrote the original SCTP implementation, adapted by the OTP team; in inet_drv.c in the emulator, as well as the parts in the kernel application. They continue to provide patches. Mat Hostetter at Tilera Corporation: Implemented ethr_atomic_cmpxchg() for all, at the time of writing, supported platforms and improved the process lock implementation by using ethr_atomic_cmpxchg() instead of ethr_atomic_or_old() and ethr_atomic_and_old().