Features/Erlang R14

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Added initial page layout for the proposed new cool feature for F-14)
 
(Done. All three major Erlang-related applications were patched for compatibility with R14)
 
(37 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Erlang OTP R14 =
+
= Erlang/OTP R14 =
  
 
== Summary ==
 
== Summary ==
  
Update Erlang to the upstream R14 release.  
+
Update Erlang to the upstream R14 release. The R14A version was released 16 June 2010, and final version is scheduled for 1st September 2010.
  
 
== Owners ==
 
== Owners ==
Line 12: Line 12:
 
== Current status ==
 
== Current status ==
 
* Targeted release: [[Releases/14 | Fedora 14 ]]  
 
* Targeted release: [[Releases/14 | Fedora 14 ]]  
* Last updated: 2010-06-17
+
* Last updated: 2010-07-29
* Percentage of completion: 0%
+
* Percentage of completion: 100%
  
 
== Detailed Description ==
 
== Detailed Description ==
  
TBD
+
Erlang is a general-purpose concurrent programming language and runtime system. The sequential subset of Erlang is a functional language, with strict evaluation, single assignment, and dynamic typing. For concurrency it follows the Actor model. It was designed by Ericsson  to support distributed, fault-tolerant, soft-real-time, non-stop applications. The first version was developed by Joe Armstrong in 1986. It supports hot swapping, thus code can be changed without stopping a system. Erlang was originally a proprietary language within Ericsson, but was released as open source in 1998.
  
 +
While threads are considered a complicated and error-prone topic in most languages, Erlang provides language-level features for creating and managing processes with the aim of simplifying concurrent programming. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes the need for locks.
 +
 +
''The above text was taken from [http://en.wikipedia.org/wiki/Erlang_%28programming_language%29 en:wikipedia:erlang]''
 +
 +
The status of Erlang and related packages in Fedora/EPEL is shown at [[SIGs/Erlang#Current_packages|Erlang SIG]] page.
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
  
TBD
+
Some notable improvements were made in this version. Among them are:
 +
 
 +
* Users are able to create binary terms with user defined memory management.
 +
* Receive statements are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. All gen_server users (read, those who use {{package|ejabberd}} and/or {{package|couchdb}}) will love this feature!
 +
* Users can override the auto-imported BIFs with their own realizations.
 +
* Lots of other changes.
 +
 
 +
See full changelog for the details:
 +
 
 +
http://erlang.org/download/otp_src_R14A.readme
 +
 
 +
Fedora will be the first release-based distro with this new Erlang release, which encourages other Erlang developers and enthusiasts to give Fedora a try.
 +
 
 +
Also, with this feature, we will prove again that Fedora is a bleeding edge distribution.
  
 
== Scope ==
 
== Scope ==
  
TBD
+
Required steps are:
 +
 
 +
* <s>Rebuilding Erlang/OTP itself</s>. Done.
 +
* <s>Creating new list of exported functions and built-in functions (BIFs). ETA: 27-06-2010.</s> Done.
 +
* <s>Rebuilding all dependent packages. at this step we must carefully check for possible usage of obsoleted functions, for added/removed runtime requirements and provide/send upstream patches when necessary. ETA: 18-07-2010.</s> Done, except erlang-pgsql (postponed until we'll finish Erlang Packaging Guidelines). Wings3D is requiring additional manual intervention (not related to R14A).
 +
 
 +
=== Rebuilding in progress ===
 +
 
 +
{| border="1"
 +
|-
 +
| '''Name''' || '''Status'''
 +
|-
 +
| {{package|compat-erlang}} || n/a
 +
|-
 +
| {{package|couchdb}} || {{yes}}
 +
|-
 +
| {{package|ejabberd}} ||  {{yes}}
 +
|-
 +
| {{package|erlang}} || {{yes}}
 +
|-
 +
| {{package|erlang-eradius}} || {{yes}}
 +
|-
 +
| {{package|erlang-erlsyslog}} || {{yes}}
 +
|-
 +
| {{package|erlang-esdl}} || {{yes}}
 +
|-
 +
| {{package|erlang-oauth}} || {{yes}}
 +
|-
 +
| {{package|erlang-pgsql}} || {{no}}<ref>No rebuild is required in this case, actually. So we decided to postpone rebuild until new Erlang Packaging Guidelines will be written</ref>
 +
|-
 +
| {{package|erlang-erlsom|erlsom}} || {{yes}}
 +
|-
 +
| {{package|erlang-esasl|esasl}} || {{yes}}
 +
|-
 +
| {{package|erlang-etap|etap}} || {{yes}}
 +
|-
 +
| {{package|erlang-ibrowse|ibrowse}} || {{yes}}
 +
|-
 +
| {{package|erlang-mochiweb|mochiweb}} || {{yes}}
 +
|-
 +
| {{package|rabbitmq-server}} || {{yes}}
 +
|-
 +
| {{package|wings}} || {{yes}} <ref>Needs further testing</ref>
 +
|}
 +
 
 +
<references />
 +
 
 +
In fact, the last step is not necessary for all Erlang-related packages, since Erlang's binary format is API/ABI-stable, but, just to be sure that every runtime dependency will be met, I propose full rebuild.
  
 
== How To Test ==
 
== How To Test ==
  
TBD
+
* Ensure that high-grade Erlang applications are still working:
 +
** {{package|couchdb}} (spec-file has %check section with a complete set of self-tests)
 +
** {{package|ejabberd}}
 +
** {{package|rabbitmq-server}}
 +
 
 +
* Collect feedback from volunteers regarding their experience with this Erlang/OTP version
  
 
== Contingency Plan ==
 
== Contingency Plan ==
  
TBD
+
None necessary. Instead of falling back to previous version we should fix existing packages in order to help the Community. We should also monitor upstream development process for potentially discovered issues and proactively apply patches.
 +
 
 +
== Documentation ==
 +
 
 +
* http://erlang.org/download/otp_src_R14A.readme
 +
* http://thread.gmane.org/gmane.comp.lang.erlang.general/46716
  
 
== Release Notes ==
 
== Release Notes ==
  
TBD
+
New version of Erlang/OTP is available in Fedora 14.
  
 
== Comments and Discussion ==
 
== Comments and Discussion ==
 
* See [[Talk:Features/Erlang_R14]]
 
* See [[Talk:Features/Erlang_R14]]
  
[[Category:FeaturePageIncomplete]]
+
[[Category:FeatureAcceptedF14]]
 
<!-- When your feature page is completed and ready for review -->
 
<!-- When your feature page is completed and ready for review -->
 
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
 
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Latest revision as of 13:26, 29 July 2010

Contents

[edit] Erlang/OTP R14

[edit] Summary

Update Erlang to the upstream R14 release. The R14A version was released 16 June 2010, and final version is scheduled for 1st September 2010.

[edit] Owners

  • email: lemenkov@gmail.com

[edit] Current status

  • Targeted release: Fedora 14
  • Last updated: 2010-07-29
  • Percentage of completion: 100%

[edit] Detailed Description

Erlang is a general-purpose concurrent programming language and runtime system. The sequential subset of Erlang is a functional language, with strict evaluation, single assignment, and dynamic typing. For concurrency it follows the Actor model. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. The first version was developed by Joe Armstrong in 1986. It supports hot swapping, thus code can be changed without stopping a system. Erlang was originally a proprietary language within Ericsson, but was released as open source in 1998.

While threads are considered a complicated and error-prone topic in most languages, Erlang provides language-level features for creating and managing processes with the aim of simplifying concurrent programming. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes the need for locks.

The above text was taken from en:wikipedia:erlang

The status of Erlang and related packages in Fedora/EPEL is shown at Erlang SIG page.

[edit] Benefit to Fedora

Some notable improvements were made in this version. Among them are:

  • Users are able to create binary terms with user defined memory management.
  • Receive statements are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. All gen_server users (read, those who use Package-x-generic-16.pngejabberd and/or Package-x-generic-16.pngcouchdb) will love this feature!
  • Users can override the auto-imported BIFs with their own realizations.
  • Lots of other changes.

See full changelog for the details:

http://erlang.org/download/otp_src_R14A.readme

Fedora will be the first release-based distro with this new Erlang release, which encourages other Erlang developers and enthusiasts to give Fedora a try.

Also, with this feature, we will prove again that Fedora is a bleeding edge distribution.

[edit] Scope

Required steps are:

  • Rebuilding Erlang/OTP itself. Done.
  • Creating new list of exported functions and built-in functions (BIFs). ETA: 27-06-2010. Done.
  • Rebuilding all dependent packages. at this step we must carefully check for possible usage of obsoleted functions, for added/removed runtime requirements and provide/send upstream patches when necessary. ETA: 18-07-2010. Done, except erlang-pgsql (postponed until we'll finish Erlang Packaging Guidelines). Wings3D is requiring additional manual intervention (not related to R14A).

[edit] Rebuilding in progress

Name Status
Package-x-generic-16.pngcompat-erlang n/a
Package-x-generic-16.pngcouchdb Yes
Package-x-generic-16.pngejabberd Yes
Package-x-generic-16.pngerlang Yes
Package-x-generic-16.pngerlang-eradius Yes
Package-x-generic-16.pngerlang-erlsyslog Yes
Package-x-generic-16.pngerlang-esdl Yes
Package-x-generic-16.pngerlang-oauth Yes
Package-x-generic-16.pngerlang-pgsql No[1]
Package-x-generic-16.pngerlsom Yes
Package-x-generic-16.pngesasl Yes
Package-x-generic-16.pngetap Yes
Package-x-generic-16.pngibrowse Yes
Package-x-generic-16.pngmochiweb Yes
Package-x-generic-16.pngrabbitmq-server Yes
Package-x-generic-16.pngwings Yes [2]
  1. No rebuild is required in this case, actually. So we decided to postpone rebuild until new Erlang Packaging Guidelines will be written
  2. Needs further testing

In fact, the last step is not necessary for all Erlang-related packages, since Erlang's binary format is API/ABI-stable, but, just to be sure that every runtime dependency will be met, I propose full rebuild.

[edit] How To Test

  • Ensure that high-grade Erlang applications are still working:
  • Collect feedback from volunteers regarding their experience with this Erlang/OTP version

[edit] Contingency Plan

None necessary. Instead of falling back to previous version we should fix existing packages in order to help the Community. We should also monitor upstream development process for potentially discovered issues and proactively apply patches.

[edit] Documentation

[edit] Release Notes

New version of Erlang/OTP is available in Fedora 14.

[edit] Comments and Discussion