From 84adefa331c4159d432d22840663c38f155cd4c1 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 20 Nov 2009 14:54:40 +0000 Subject: The R13B03 release. --- system/doc/top/Makefile | 242 ++++++++++++++++ system/doc/top/PR.template.src | 20 ++ system/doc/top/bin/otp_man_index | 1 + system/doc/top/book.xml | 52 ++++ system/doc/top/ebin/.gitignore | 0 system/doc/top/highlights.xml | 238 +++++++++++++++ system/doc/top/incompatible.xml | 383 +++++++++++++++++++++++++ system/doc/top/print.html | 55 ++++ system/doc/top/src/erl_html_tools.erl | 1 + system/doc/top/src/erlresolvelinks.erl | 1 + system/doc/top/src/permuted_index.erl | 1 + system/doc/top/templates/applications.html.src | 34 +++ system/doc/top/templates/erlang.gif | Bin 0 -> 2162 bytes system/doc/top/templates/first.html.src | 104 +++++++ system/doc/top/templates/flip_closed.gif | Bin 0 -> 82 bytes system/doc/top/templates/flip_google.gif | Bin 0 -> 257 bytes system/doc/top/templates/flip_open.gif | Bin 0 -> 86 bytes system/doc/top/templates/flip_static.gif | Bin 0 -> 109 bytes system/doc/top/templates/flipmenu.js | 342 ++++++++++++++++++++++ system/doc/top/templates/index.html.src | 180 ++++++++++++ system/doc/top/templates/otp_top.css | 53 ++++ system/doc/top/templates/system.html.src | 281 ++++++++++++++++++ system/doc/top/templates/toc_.html.src | 105 +++++++ 23 files changed, 2093 insertions(+) create mode 100644 system/doc/top/Makefile create mode 100644 system/doc/top/PR.template.src create mode 120000 system/doc/top/bin/otp_man_index create mode 100644 system/doc/top/book.xml create mode 100644 system/doc/top/ebin/.gitignore create mode 100644 system/doc/top/highlights.xml create mode 100644 system/doc/top/incompatible.xml create mode 100644 system/doc/top/print.html create mode 120000 system/doc/top/src/erl_html_tools.erl create mode 120000 system/doc/top/src/erlresolvelinks.erl create mode 120000 system/doc/top/src/permuted_index.erl create mode 100644 system/doc/top/templates/applications.html.src create mode 100644 system/doc/top/templates/erlang.gif create mode 100644 system/doc/top/templates/first.html.src create mode 100755 system/doc/top/templates/flip_closed.gif create mode 100755 system/doc/top/templates/flip_google.gif create mode 100755 system/doc/top/templates/flip_open.gif create mode 100755 system/doc/top/templates/flip_static.gif create mode 100755 system/doc/top/templates/flipmenu.js create mode 100644 system/doc/top/templates/index.html.src create mode 100644 system/doc/top/templates/otp_top.css create mode 100644 system/doc/top/templates/system.html.src create mode 100644 system/doc/top/templates/toc_.html.src (limited to 'system/doc/top') diff --git a/system/doc/top/Makefile b/system/doc/top/Makefile new file mode 100644 index 0000000000..08fe265336 --- /dev/null +++ b/system/doc/top/Makefile @@ -0,0 +1,242 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 1999-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include $(ERL_TOP)/erts/vsn.mk + +APPLICATION=otp-system-documentation + +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/doc + +GIF_FILES = + +INFO_FILES = ../../README ../../COPYRIGHT PR.template + +TOPDOCDIR=. + +TOP_HTML_GEN_FILES = \ + $(HTMLDIR)/incompatible.html \ + $(HTMLDIR)/highlights.html + +TOP_HTML_FILES = \ + $(TOP_HTML_GEN_FILES) + +include ../installation_guide/xmlfiles.mk +include ../system_principles/xmlfiles.mk +include ../embedded/xmlfiles.mk +include ../getting_started/xmlfiles.mk +include ../reference_manual/xmlfiles.mk +include ../programming_examples/xmlfiles.mk +include ../efficiency_guide/xmlfiles.mk +include ../tutorial/xmlfiles.mk +include ../design_principles/xmlfiles.mk +include ../oam/xmlfiles.mk + +XML_FILES = \ + $(INST_GUIDE_CHAPTER_FILES:%=../installation_guide/%) \ + $(SYSTEM_PRINCIPLES_CHAPTER_FILES:%=../system_principles/%) \ + $(EMBEDDED_CHAPTER_FILES:%=../embedded/%) \ + $(GETTING_STARTED_CHAPTER_FILES:%=../getting_started/%) \ + $(REF_MAN_CHAPTER_FILES:%=../reference_manual/%) \ + $(PROG_EX_CHAPTER_FILES:%=../programming_examples/%) \ + $(EFF_GUIDE_CHAPTER_FILES:%=../efficiency_guide/%) \ + $(TUTORIAL_CHAPTER_FILES:%=../tutorial/%) \ + $(DESIGN_PRINCIPLES_CHAPTER_FILES:%=../design_principles/%) \ + $(OAM_CHAPTER_FILES:%=../oam/%) \ + ../installation_guide/part.xml \ + ../system_principles/part.xml \ + ../embedded/part.xml \ + ../getting_started/part.xml \ + ../reference_manual/part.xml \ + ../programming_examples/part.xml \ + ../efficiency_guide/part.xml \ + ../tutorial/part.xml \ + ../design_principles/part.xml \ + ../oam/part.xml + +BOOK_FILES = book.xml + +HTMLDIR= ../html +PDFREFDIR= pdf + +TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf +TOPDOC=true + +#-------------------------------------------------------------------------- +# We generate the index page from the installed system. This make +# it important that this is done last. The file index.html.src +# is used as a template for the resulting page. + +EBIN = ebin + +INDEX_SCRIPT = $(EBIN)/erl_html_tools.$(EMULATOR) +INDEX_SRC = src/erl_html_tools.erl +INDEX_FILES = \ + $(HTMLDIR)/index.html \ + $(HTMLDIR)/applications.html + +JAVASCRIPT = $(HTMLDIR)/js/erlresolvelinks.js +JAVASCRIPT_BUILD_SCRIPT = $(EBIN)/erlresolvelinks.$(EMULATOR) +JAVASCRIPT_BUILD_SCRIPT_SRC = src/erlresolvelinks.erl + +MAN_INDEX_SCRIPT = $(ERL_TOP)/system/doc/top/bin/otp_man_index +MAN_INDEX = $(HTMLDIR)/man_index.html + +GLOSSARY = $(HTMLDIR)/glossary.html +GLOSSARY_SRC = $(ERL_TOP)/system/internal_tools/doctools/src/glossary.erl +GLOSSARY_SCRIPT = $(EBIN)/glossary.$(EMULATOR) + +#-------------------------------------------------------------------------- + +$(INDEX_SCRIPT): $(INDEX_SRC) + $(ERLC) -o$(EBIN) +warn_unused_vars $< + +# We don't list toc_*.html as targets because we don't know +$(HTMLDIR)/index.html: $(INDEX_SCRIPT) +ifneq ($(INSTALLROOT),) + echo "Generating index $@" + $(ERL) -noshell -pa $(EBIN) -s erl_html_tools top_index $(INSTALLROOT) \ + $(HTMLDIR) $(SYSTEM_VSN) -s erlang halt +else + @echo "INSTALLROOT unset, no indexes built." +endif + +#-------------------------------------------------------------------------- + +$(JAVASCRIPT_BUILD_SCRIPT): $(JAVASCRIPT_BUILD_SCRIPT_SRC) + $(ERLC) -o$(EBIN) +warn_unused_vars $< + +$(JAVASCRIPT): $(JAVASCRIPT_BUILD_SCRIPT) +ifneq ($(INSTALLROOT),) + echo "Generating javascript for resolving HTML links" + erl -noshell -pa $(EBIN) -s erlresolvelinks make $(INSTALLROOT) \ + . -s erlang halt + mkdir $(HTMLDIR)/js + mv erlresolvelinks.js $(JAVASCRIPT) # not portable !!! +else + @echo "INSTALLROOT unset, no javascript generated." +endif + +#-------------------------------------------------------------------------- + +$(MAN_INDEX): $(MAN_INDEX_SCRIPT) +ifneq ($(INSTALLROOT),) + echo "Generating index $@" + (cd $(INSTALLROOT); perl $< ) > $@ +else + @echo "INSTALLROOT unset, no manual index built." +endif +#-------------------------------------------------------------------------- + +$(HTMLDIR)/highlights.html: highlights.xml + date=`date +"%B %e %Y"`; \ + $(XSLTPROC) --output $(@) --stringparam docgen "$(DOCGEN)" --stringparam topdocdir "$(TOPDOCDIR)" \ + --stringparam pdfdir "$(PDFREFDIR)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" \ + --stringparam appver "$(VSN)" -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_html_entities \ + $(DOCGEN)/priv/xsl/db_html.xsl $< + + +$(HTMLDIR)/incompatible.html: incompatible.xml + date=`date +"%B %e %Y"`; \ + $(XSLTPROC) --output $(@) --stringparam docgen "$(DOCGEN)" --stringparam topdocdir "$(TOPDOCDIR)" \ + --stringparam pdfdir "$(PDFREFDIR)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" \ + --stringparam appver "$(VSN)" -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_html_entities \ + $(DOCGEN)/priv/xsl/db_html.xsl $< + +#-------------------------------------------------------------------------- + +$(GLOSSARY_SCRIPT): $(GLOSSARY_SRC) + $(ERLC) -o$(EBIN) $(GLOSSARY_SRC) + +$(GLOSSARY): $(GLOSSARY_SCRIPT) + $(ERL) -noshell -pa $(EBIN) \ + -s glossary make ../definitions/term.defs -s erlang halt > \ + $(GLOSSARY) + +#-------------------------------------------------------------------------- + +PR.template: PR.template.src $(ERL_TOP)/erts/vsn.mk + sed -e 's;%VSN%;$(VSN);' \ + -e 's;%SYSTEM_VSN%;$(SYSTEM_VSN);' \ + $< > $@ + +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +XML_FLAGS += +DVIPS_FLAGS += + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- + + +docs: pdf html $(INFO_FILES) + +local_docs: PDFREFDIR=../pdf + +$(TOP_PDF_FILE): $(XML_FILES) + +pdf: $(TOP_PDF_FILE) + +html: $(INDEX_FILES) $(TOP_HTML_FILES) \ + $(MAN_INDEX) $(JAVASCRIPT) + +debug opt: + +clean: + rm -rf ../html/js + rm -f PR.template + rm -f $(INDEX_FILES) $(TOP_HTML_FILES) $(MAN_INDEX) + rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo) + rm -f $(INDEX_SCRIPT) $(GLOSSARY_SCRIPT) \ + $(JAVASCRIPT_BUILD_SCRIPT) + rm -f erl_crash.dump errs core *~ + +# ---------------------------------------------------- +# Release Target +# ---------------------------------------------------- +include $(ERL_TOP)/make/otp_release_targets.mk + + +release_docs_spec: docs + $(INSTALL_DIR) $(RELEASE_PATH) + $(INSTALL_DATA) $(INFO_FILES) $(RELEASE_PATH) + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/pdf + $(INSTALL_DATA) \ + $(TOP_PDF_FILE) $(RELSYSDIR)/pdf +#$(TOP_HTML_FILES) +ifneq ($(INSTALLROOT),) + $(INSTALL_DATA) $(INDEX_FILES) $(MAN_INDEX) $(TOP_HTML_FILES) $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/js + $(INSTALL_DATA) \ + $(JAVASCRIPT) $(RELSYSDIR)/js +endif + + +release_spec: diff --git a/system/doc/top/PR.template.src b/system/doc/top/PR.template.src new file mode 100644 index 0000000000..fb593053d9 --- /dev/null +++ b/system/doc/top/PR.template.src @@ -0,0 +1,20 @@ +>Submitter-Id: +>Originator: +>Organization: +>Confidential: <[yes | no ] (one line)> +>Synopsis: +>Severity: < [non-critical | serious | critical ] (one line)> +>Priority: < [ low | medium | high ] (one line)> +>Category: +>Class: < [ sw-bug | doc-bug | change-request | support ] (one line)> +>Release: +>Environment: + +>Description: + +>How-To-Repeat: + Fix: + + diff --git a/system/doc/top/bin/otp_man_index b/system/doc/top/bin/otp_man_index new file mode 120000 index 0000000000..bb913b25df --- /dev/null +++ b/system/doc/top/bin/otp_man_index @@ -0,0 +1 @@ +../../../../internal_tools/integration/scripts/otp_man_index \ No newline at end of file diff --git a/system/doc/top/book.xml b/system/doc/top/book.xml new file mode 100644 index 0000000000..96f39b0b83 --- /dev/null +++ b/system/doc/top/book.xml @@ -0,0 +1,52 @@ + + + + +
+ + 19972009 + Ericsson AB. All Rights Reserved. + + + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + + + Erlang/OTP System Documentation + OTP Team + + 2009-08-21 + A + book.xml +
+ + + + + + + + + + + + + + + + + + + + +
+ diff --git a/system/doc/top/ebin/.gitignore b/system/doc/top/ebin/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/system/doc/top/highlights.xml b/system/doc/top/highlights.xml new file mode 100644 index 0000000000..a30742aed6 --- /dev/null +++ b/system/doc/top/highlights.xml @@ -0,0 +1,238 @@ + + + + +
+ + 20062009 + Ericsson AB. All Rights Reserved. + + + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + + + Highlights + + + + A + highlights.xml +
+

This document lists some highlights of Erlang 5.7/OTP R13A + (unpatched), compared to the previous version Erlang 5.6/OTP R12B, + with focus on things not already released as R12B patches.

+

Note: This document was compiled at the time when R13A was released + and does not list any features introduced in R13 patches.

+ +
+ Erlang Language and Run-time System +
+ Multi-core and SMP performance improvements +

+ There SMP performance is significantly improved and will + allow most applications to scale much better on systems with many + cores or processors. Listed below are some of the most important improvements: +

+ + +

+ The runtime system with SMP support now uses multiple, + scheduler specific run queues, instead of one globally shared + run queue. +

+

+ The lock protecting the shared run queue was heavily + contended, and the shared run queue also caused Erlang + processes to randomly migrate between schedulers with + negative cache effects as a result. +

+

+ With the current scheduler specific run queue solution, lock + contention due to run queue protection has been reduced, and + Erlang processes are only migrated when needed to balance the + load between the schedulers. The reduced amount of migration + also reduce lock contention on locks protecting the scheduler + specific instances of the erts internal memory allocators. +

+

+ The scheduler specific run queues are also a necessity for a + lot of future planned NUMA (Non-Uniform Memory Access) + specific optimizations. +

+
+ +

+ Message passing has been further optimized for parallell execution. + This makes parallell sending to one common receiver much more efficient. +

+
+ +

+ Scheduler threads can now be bound to logical processors on newer + Linux ans Solaris systems. +

+
+
+
+
+ Unicode support +

+ Support for Unicode is implemented as described in EEP10. + Formatting and reading of unicode data both from terminals + and files is supported by the io and io_lib modules. + Files + can be opened in modes with automatic translation to and from + different unicode formats. The module 'unicode' contains + functions for conversion between external and internal + unicode formats and the re module has support for unicode + data. There is also language syntax for specifying string and + character data beyond the ISO-latin-1 range. +

+
+ +
+ New BIF's +

+ The BIFs atom_to_binary/2, binary_to_atom/2 and + binary_to_existing_atom/2 have been added. +

+
+ +
+ Independent Erlang clusters on the same host +

+ Nodes belonging to different independent clusters can now + co-exist on the same host with the help of a new + environment variable setting ERL_EPMD_PORT. + The environment variable is used by Erl_interface and J_interface + as well. +

+
+
+ +
+ New Applications + +
+ Reltool + +

+ Reltool is a release management tool. + It analyses a given Erlang/OTP installation and determines + various dependencies between applications. + The graphical frontend depicts the dependencies and enables + interactive customization of a target system. + The backend provides a batch interface for generation of + customized target systems. + The application is still somewhat limited and should be regarded + as experimental in this release. The intention is that this + application will be a valuable tool for making both traditional + Erlang target systems as well as standalone components in Erlang. +

+
+ +
+ WxErlang +

+ wxErlang is an Erlang binding to the WxWidgets GUI library which + provides support for cross platform GUI applications. + wxErlang is still in beta status and the intention is that it shall + replace GS in a later stage. The Erlang debugger is also shipped in + a wxErlang version. +

+
+ + +
+ +
+ New features in Existing Applications + +
+ Common_test + +

+ A support client module for SSH and SFTP, ct_ssh, has + been introduced. +

+

+ Test case groups have been introduced. With this feature + it's possible to execute groups (possibly nested) + of test cases. +

+

+ A group definition contains a name tag, a list of + properties and a list of test cases (including possible + nested group definitions). The properties make it possible + to execute test cases in parallel, in sequence and in + shuffled order. It is also possible to repeat test cases + according to different criteria. +

+
+ + +
+ Dialyzer +

+ The analysis now accepts opaque type declarations and + detects + violations of opaqueness of terms of such types. Starting + with R13, many Erlang/OTP standard libraries (array, dict, + digraph, ets, gb_sets, gb_trees, queue, and sets) contain + opaque type declarations of their main data types. Dialyzer + will spit out warnings in code that explicitly depends on the + structure of these terms. +

+

+ Added support for handling UTF segments in bitstreams and for + detecting obvious type errors in these segments. Warning: + This code is not terribly tested though since there are very + few Erlang programs which use Unicode-based binaries - not + surprising since this is a new language feature of R13. +

+

+ Strengthened the discrepancy identification when testing for + equality and matching between terms of different types. This + detects more bugs in code. +

+

+ See the Dialyzer documentation and release notes for even more + enhancements. +

+
+ +
+ SSL +

+ The "new_ssl" implementation is significantly improved and should be + near product status now. + The new SSL is implemented in pure Erlang except for + the crypto routines that are implemented in the crypto driver which + is an interface to libcrypto from OpenSSL. +

+
+ +
+ STDLIB + +

The Erlang scanner has been augmented as to return white-space, + comments and exact location of tokens. + This means that the scanner can easily be used in tools such as editors, + pretty printers, syntax highlighters etc. + where it is important to be able recreate the original source document. +

+
+ +
+
+ diff --git a/system/doc/top/incompatible.xml b/system/doc/top/incompatible.xml new file mode 100644 index 0000000000..ce9522725b --- /dev/null +++ b/system/doc/top/incompatible.xml @@ -0,0 +1,383 @@ + + + + +
+ + 20062009 + Ericsson AB. All Rights Reserved. + + + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + + + Potential Incompatibilities + + + + + incompatible.xml +
+

This document contains a list of potential incompatibilities + between Erlang 5.7/OTP R12A and Erl 5.6.5/OTP R12B-5, + and is an extract from the release notes for the respective applications.

+ +
+ compiler + + +

+ The undocumented, unsupported, and deprecated guard BIF + is_constant/1 has been removed.

+

+ *** INCOMPATIBILITY with R12B ***

+

+ Own Id: OTP-7673

+
+ +

The short-circuit operators andalso and + orelse no longer guarantees that their second + argument is either true or false. As a + consequence, andalso/orelse are now + tail-recursive.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7748

+
+ +

The compiler will refuse to a compile file where the + module name in the file differs from the output file + name.

+

When compiling using erlc, the current working + directory will no be included in the code path (unless + explicitly added using "-pa .").

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7793

+
+ +

If a module contains an exported function with the + same name as an auto-imported BIF (such as + length/1), any calls to the BIF must have an + explicit erlang: prefix, or there will be a + compilation error (such calls would only generate a + warning in previous releases).

+

(The reason for the change is to avoid breaking code + in a future major release, R14 or R15, in which we plan + to make calls without a module prefix always call the + local function in the same module even if there is an + auto-imported BIF with the same name.)

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7873

+
+
+
+ +
+ Erts + + +

Support for Unicode is implemented as described in + EEP10. Formatting and reading of unicode data both from + terminals and files is supported by the io and io_lib + modules. Files can be opened in modes with automatic + translation to and from different unicode formats. The + module 'unicode' contains functions for conversion + between external and internal unicode formats and the re + module has support for unicode data. There is also + language syntax for specifying string and character data + beyond the ISO-latin-1 range.

+

The interactive shell will support input and output of + unicode characters when the terminal and operating system + supports it.

+

Please see the EEP and the io/io_lib manual pages as + well as the stdlib users guide for details.

+

I/O-protocol incompatibilities:

+

The io_protocol between io_Server and client is + updated to handle protocol data in unicode formats. The + updated protocol is now documented. The specification + resides in the stdlib users manual, which is a + new part of the manual.

+

io module incompatibilities:

+

The io:put_chars, io:get_chars and io:get_line all + handle and return unicode data. In the case where + binaries can be provided (as to io:put_chars), they shall + be encoded in UTF-8. When binaries are returned (as by + io:get_line/get_chars when the io_server is set in + binary mode) the returned data is also + always encoded as UTF-8. The file module however + still returns byte-oriented data, why file:read can be + used instead of io:get_chars to read binary data in + ISO-latin-1.

+

io_lib module incompatibilities:

+

io_lib:format can, given new format directives (i.e + "~ts" and "~tc"), return lists containing integers larger + than 255.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494 + OTP-7443 OTP-7181 EEP10 EEP11

+
+ +

+ The undocumented, unsupported, and deprecated guard BIF + is_constant/1 has been removed.

+

+ *** INCOMPATIBILITY with R12B ***

+

+ Own Id: OTP-7673

+
+ +

The short-circuit operators andalso and + orelse no longer guarantees that their second + argument is either true or false. As a + consequence, andalso/orelse are now + tail-recursive.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7748

+
+ +

The compiler will refuse to a compile file where the + module name in the file differs from the output file + name.

+

When compiling using erlc, the current working + directory will no be included in the code path (unless + explicitly added using "-pa .").

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7793

+
+ +

The deprecated functions erlang:fault/1, + erlang:fault/2, and file:rawopen/2 have + been removed.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7812

+
+ +

The escape sequences \x and \{ have been + assigned new interpretations (they used to return the + ASCII code for x and { respectively). One + or more octal characters inside curly brackets after a + leading backslash is from now on an alternative to the + existing syntax \NNN, but can also be used for + codes greater than 255. In a similar fashion, one or more + hexadecimal characters can be put inside curly brackets + after a leading \x. Furthermore, the escape + sequences \xH and \xHH, where N is a + hexadecimal character, can be used for codes less than + 256.

+

NOTE: These new escape sequences are still considered + experimental and may be changed in the R13B release.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7855

+
+
+
+ +
+ Inets + + +

+ [httpc] - The inets http client will now use persistent + connections without pipelining as default and if a + pipeline timeout is set it will pipeline the requests on + the persistent connections.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7463

+
+
+
+ +
+ Jinterface + + +

+ A number of fixes and improvements from the ErlIDE group; + Vlad Dumitrescu and Jakob Cederlund: JDK 1.5 is now a + minimal requirement for building Jinterface. New method: + OtpEpmd.lookupNames. OtpErlangList is now iterable. + Non-proper lists are now allowed - you have to test if a + list is proper or not. Non-proper lists can also be + created. New methods: isProper, getHead, getTail and + getNthTail. The get tail methods creates a sublist object + that re-uses the original list. OtpErlangPid is now + Comparable. Empty atoms can now be constructed, a missing + feature pointed out by Sebastien Boisgerault on + erlang-questions.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7832

+
+
+
+ +
+ Kernel + + +

The deprecated functions erlang:fault/1, + erlang:fault/2, and file:rawopen/2 have + been removed.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7812

+
+
+
+ +
+ SSH + + +

+ Ssh timeouts will now behave as expected i.e. defaults to + infinity. Only the user of the ssh application can know of + a reasonable timeout value for their application.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7807

+
+ +

+ Added the message {ssh_channel_up, ChannelId, + ConnectionManager} that shall be handled by the channel + callback handle_msg/2. This makes the function + handle_msg/2 a mandatory function for ssh channels + implementations which it was not in ssh-1.1.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7828

+
+
+
+ +
+ STDLIB + + +

The functions lists:seq/1,2 return the empty + list in a few cases when they used to generate an + exception, for example lists:seq(1, 0). See + lists(3) for details. (Thanks to Richard O'Keefe.)

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7230

+
+ +

Support for Unicode is implemented as described in + EEP10. Formatting and reading of unicode data both from + terminals and files is supported by the io and io_lib + modules. Files can be opened in modes with automatic + translation to and from different unicode formats. The + module 'unicode' contains functions for conversion + between external and internal unicode formats and the re + module has support for unicode data. There is also + language syntax for specifying string and character data + beyond the ISO-latin-1 range.

+

The interactive shell will support input and output of + unicode characters when the terminal and operating system + supports it.

+

Please see the EEP and the io/io_lib manual pages as + well as the stdlib users guide for details.

+

I/O-protocol incompatibilities:

+

The io_protocol between io_Server and client is + updated to handle protocol data in unicode formats. The + updated protocol is now documented. The specification + resides in the stdlib users manual, which is a + new part of the manual.

+

io module incompatibilities:

+

The io:put_chars, io:get_chars and io:get_line all + handle and return unicode data. In the case where + binaries can be provided (as to io:put_chars), they shall + be encoded in UTF-8. When binaries are returned (as by + io:get_line/get_chars when the io_server is set in + binary mode) the returned data is also + always encoded as UTF-8. The file module however + still returns byte-oriented data, why file:read can be + used instead of io:get_chars to read binary data in + ISO-latin-1.

+

io_lib module incompatibilities:

+

io_lib:format can, given new format directives (i.e + "~ts" and "~tc"), return lists containing integers larger + than 255.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494 + OTP-7443 OTP-7181 EEP10 EEP11

+
+ +

+ filelib:fold_files/5 now uses the re module + instead of the regexp module for regular + expression matching. In practice, this change will not be + a problem for most regular expressions used for + filelib:fold_files/5. (The major difference in + regular expression is that parenthesis and curly brackets + is treated as literal characters by regexp but as + special characters by re; fortunately, those + characters are rarely used in filenames.)

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7819

+
+ +

+ digraph:new(Type) will now cause a badarg + exception if Type is not a valid type. Similarly, + digraph_utils:subgraph/2,3 will now cause a + badarg if the arguments are invalid. (Those + functions used to return error tuples if something was + wrong.)

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7824

+
+ +

The argument passed to random:uniform/1 must + now be an integer (as stated in the documentation). In + previous releases, a floating point number was also + allowed.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-7827

+
+
+
+
+ diff --git a/system/doc/top/print.html b/system/doc/top/print.html new file mode 100644 index 0000000000..b562d0e9bc --- /dev/null +++ b/system/doc/top/print.html @@ -0,0 +1,55 @@ + + + + + Erlang/OTP Documentation for Printing + + + + + + +
+ + Ericsson AB + +
+ + + [Up | + Ericsson AB] + +
+ +

+Documentation for Printing
+

+
+ +

+ +You can get this documentation preformated for printing in PDF +format from the + + Erlang/OTP documentation page +. Here you can find links to documentation for the latest release as well as for older releases. + + +

+

+
+ + Copyright © 1991-2008 + Ericsson AB + +
+ + diff --git a/system/doc/top/src/erl_html_tools.erl b/system/doc/top/src/erl_html_tools.erl new file mode 120000 index 0000000000..35a199b08d --- /dev/null +++ b/system/doc/top/src/erl_html_tools.erl @@ -0,0 +1 @@ +../../../../internal_tools/integration/scripts/make_index/erl_html_tools.erl \ No newline at end of file diff --git a/system/doc/top/src/erlresolvelinks.erl b/system/doc/top/src/erlresolvelinks.erl new file mode 120000 index 0000000000..8d277ad17a --- /dev/null +++ b/system/doc/top/src/erlresolvelinks.erl @@ -0,0 +1 @@ +../../../../internal_tools/integration/scripts/resolve_links/erlresolvelinks.erl \ No newline at end of file diff --git a/system/doc/top/src/permuted_index.erl b/system/doc/top/src/permuted_index.erl new file mode 120000 index 0000000000..e65338a517 --- /dev/null +++ b/system/doc/top/src/permuted_index.erl @@ -0,0 +1 @@ +../../../../internal_tools/integration/scripts/make_index/permuted_index.erl \ No newline at end of file diff --git a/system/doc/top/templates/applications.html.src b/system/doc/top/templates/applications.html.src new file mode 100644 index 0000000000..0251d39b28 --- /dev/null +++ b/system/doc/top/templates/applications.html.src @@ -0,0 +1,34 @@ + + + + Erlang/OTP #version# + + + + +
+#groups# +
+ + diff --git a/system/doc/top/templates/erlang.gif b/system/doc/top/templates/erlang.gif new file mode 100644 index 0000000000..91fd4b9647 Binary files /dev/null and b/system/doc/top/templates/erlang.gif differ diff --git a/system/doc/top/templates/first.html.src b/system/doc/top/templates/first.html.src new file mode 100644 index 0000000000..edef1c0e5c --- /dev/null +++ b/system/doc/top/templates/first.html.src @@ -0,0 +1,104 @@ + + + + Erlang/OTP #release# Documentation + + + +
+

+Welcome to Erlang/OTP, a complete
+development environment
+for concurrent programming.
+

+
+
+
+
+

+ +Some hints that may get you started faster + +

+ +
    + +
  • In addition the the documentation here Erlang is described in the book +"Programming Erlang", ISBN 978-1-934356-00-5 which we really recommend as a start.
    +The complete language is also described in the Erlang Reference Manual. An Erlang tutorial can be found in Getting Started With Erlang. +
  • +
  • Erlang/OTP is divided into a number of OTP applications. An application normally contains +Erlang modules. Some OTP applications, +such as the C interface Erl_Interface, are written in other languages and have no Erlang +modules. + +

    +Note that functions that are not imported or prefixed with a module +name belong to the module +erlang +(in the Kernel application). +

    +

    +

  • On a Unix system you can view the manual pages from the command +line using +
    +    % erl -man <module>
    +
    +

    + +

  • You can of course use any editor you like to write Erlang +programs, but if you use Emacs there exists editing support such as +indentation, syntax highlighting, electric commands, module name +verification, comment support including paragraph filling, skeletons, +tags support and more. See the Tools application for details. +

    +There is also an + +Erlang plugin (ErlIde) for Eclipse if you prefer a more graphical +environment. ErlIde is under development and should at the time +of writing this be quite stable and useful. +

  • When developing with Erlang/OTP you usually test your programs +from the interactive shell (see Getting Started With Erlang) where you can call individual +functions. There is also a number of tools available, such as the graphical Debugger, the process +manager Pman and table +viewer TV. +

    Also note that there are some shell features like history list +(control-p and control-n), inline editing (emacs key bindings) and +module and function name completion (tab) if the module is loaded. +

    + +

  • OpenSource users can ask questions +and share experiences on the Erlang questions mailing list.

    + +

  • Before asking a question you can browse the mailing list archive and read the Frequently +Asked Questions.

    + +

  • Additional information and links of interest for Erlang programmers can be found on the Erlang Open Source site +http://www.erlang.org. +

    + +

+ + + diff --git a/system/doc/top/templates/flip_closed.gif b/system/doc/top/templates/flip_closed.gif new file mode 100755 index 0000000000..9a27c7c25d Binary files /dev/null and b/system/doc/top/templates/flip_closed.gif differ diff --git a/system/doc/top/templates/flip_google.gif b/system/doc/top/templates/flip_google.gif new file mode 100755 index 0000000000..3f0543c2bb Binary files /dev/null and b/system/doc/top/templates/flip_google.gif differ diff --git a/system/doc/top/templates/flip_open.gif b/system/doc/top/templates/flip_open.gif new file mode 100755 index 0000000000..9dda60e73a Binary files /dev/null and b/system/doc/top/templates/flip_open.gif differ diff --git a/system/doc/top/templates/flip_static.gif b/system/doc/top/templates/flip_static.gif new file mode 100755 index 0000000000..2b3ddb5382 Binary files /dev/null and b/system/doc/top/templates/flip_static.gif differ diff --git a/system/doc/top/templates/flipmenu.js b/system/doc/top/templates/flipmenu.js new file mode 100755 index 0000000000..92a5a58a06 --- /dev/null +++ b/system/doc/top/templates/flipmenu.js @@ -0,0 +1,342 @@ +// ###################################################################### + +// ## flipMenu 5.0.0 (c) J. Reijers +// ## Last modifications: 23 March 2007 + +// ###################################################################### + +// ## Degree of indentation from the left. + flipIndentation = "5px"; + +// ## Padding inbetween menu items. + flipVerticalPadding = "4px"; + +// ## Margin between the left of the browser and the menu. + flipLeftMargin = "16px"; + +// ## Margin between the top of the browser and the menu. + flipTopMargin = "10px"; + +// ## Allow multiple menus to fold out without closing all the other open ones. + flipOpenMultipleMenus = false; + +// ## Preserve the current state of the menu (requires cookies). + flipSaveMenuState = true; + +// ## Use custom images for bullets + flipImages = true; + +// ## Images to use (specify full path) + flipImg_open = "flip_open.gif"; + flipImg_closed = "flip_closed.gif"; + flipImg_static = "flip_static.gif"; + +// ## Initialise all flipMenus onload + flipInitOnLoad = true; + +// ## Message to display in status bar while loading + flipLoadingMessage = "Loading..."; + +// ###################################################################### + +function alterSize(someSize, alterAmount) { + someSize = String(someSize); + var tmpNr = parseFloat(someSize.replace(/\D/g, "")); + var tmpChar = someSize.replace(/\d/g, ""); + return isNaN(tmpNr) ? someSize : ((tmpNr + alterAmount) + tmpChar); +} + +isIE = (String(navigator.appVersion).indexOf("MSIE") > -1); +if (!isIE) flipIndentation = alterSize(flipIndentation, -16); +if (!isIE) flipLeftMargin = alterSize(flipLeftMargin, -16); + +document.write( + "" +); + +if (flipImages) { + aFlipPreloads = []; + aFlipPreloads[0] = new Image; + aFlipPreloads[0].src = flipImg_open; + aFlipPreloads[1] = new Image; + aFlipPreloads[1].src = flipImg_closed; + aFlipPreloads[2] = new Image; + aFlipPreloads[2].src = flipImg_static; +} + +function addEvent(someObj, someEvent, someFunction) { + if (someObj.addEventListener) { someObj.addEventListener(someEvent, someFunction, true); return true; } else if (someObj.attachEvent) return someObj.attachEvent("on" + someEvent, someFunction); else return false; +} + +function openCloseFlip(theItem, newSetting, openParents) { + if (theItem.flipID) { + if (openParents) { + var tmpItem = theItem; + while (tmpItem.parentElement || tmpItem.parentNode) { + tmpItem = (tmpItem.parentElement) ? tmpItem.parentElement : tmpItem.parentNode; + openCloseFlip(tmpItem, newSetting); + } + } + if ((theItem.className == "flipFolderOpen" && newSetting == "closed") || (theItem.className == "flipFolderClosed" && newSetting == "open")) { + if (!theItem.childrenInitialised) { + for (var j = 0; j < theItem.childNodes.length; j++) if (theItem.childNodes[j].nodeName == "UL" && !theItem.childNodes[j].initialised) initFlip(theItem.childNodes[j]); + theItem.childrenInitialised = true; + } + theItem.getElementsByTagName("UL")[0].style.display = (newSetting == "open") ? "" : "none"; + theItem.className = newSetting == "open" ? "flipFolderOpen" : "flipFolderClosed"; + } + } +} + +function openFlip(theItem, openParents) { + openCloseFlip(theItem, "open", openParents); +} + +function closeFlip(theItem, closeParents) { + openCloseFlip(theItem, "closed", closeParents); +} + +function toggleFlip(theElement) { + if (theElement.flipID) { + var theItem = theElement; + var isContained = true; + } else { + if (theElement && theElement.button > 0) return false; + var theItem = (isIE) ? event.srcElement : theElement.target; + + var isContained = false; + if (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") isContained = true; else while (theItem.parentElement || theItem.parentNode) { + if (theItem.className == "flipStatic" || theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") { + isContained = (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed"); + break; + } + theItem = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode; + } + } + + var toOpenFlip = (isContained && theItem.className == "flipFolderClosed"); + + if (!flipOpenMultipleMenus && (toOpenFlip || theItem.className == "flipStatic")) { + if (theItem.parentElement || theItem.parentNode) { + var parentUL = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode; + for (var i = 0; i < parentUL.childNodes.length; i++) closeFlip(parentUL.childNodes[i]); + } + } + + if (isContained) { + if (toOpenFlip) openFlip(theItem); else closeFlip(theItem); + } +} + +function setAllFlips(startElement, newSetting) { + if (typeof startElement == "undefined") var startElement = document; + if (typeof newSetting == "undefined") var newSetting = "closed"; + + var aUL = startElement.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + var parentFlip = aUL[i].parentElement ? aUL[i].parentElement : aUL[i].parentNode; + openCloseFlip(parentFlip, newSetting); + } +} + +function openAllFlips(startElement) { + setAllFlips(startElement, "open"); +} + +function closeAllFlips(startElement) { + setAllFlips(startElement, "closed"); +} + +function initFlip(startElement) { + if (!document.createElement) return false; + + if (!startElement || !startElement.nodeName) { + var aUL = document.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + if (flipLoadingMessage != "") window.status = flipLoadingMessage + " " + parseInt((i / (aUL.length - 1)) * 100, 10) + "%"; + var curUL = aUL[i]; + if (curUL.className == "flipMenu") { + initFlip(curUL); + + // ## Fix text selecting problem in Mozilla + curUL.onselectstart = new Function("return false"); + curUL.onmousedown = new Function("return false"); + curUL.onclick = new Function("return true"); + } + } + + if (flipSaveMenuState) loadMenuState(); + + if (flipLoadingMessage != "") window.status = ""; + return true; + } + + if (startElement.className == "flipMenu") startElement.style.display = ""; + + if (!startElement.childNodes || startElement.childNodes.length == 0) return false; + + if (typeof flipIDCur == "undefined") flipIDCur = 0; + if (!startElement.initialised) { + var aUL = startElement.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) aUL[i].style.display = "none"; + } + + for (var i = 0; i < startElement.childNodes.length; i++) { + var curNode = startElement.childNodes[i]; + if (curNode.nodeName == "LI") { + flipIDCur++; + curNode.flipID = flipIDCur; + + var nodeHasChildren = curNode.getElementsByTagName("UL").length > 0; + if (nodeHasChildren) { + if (flipImages && curNode.flipClosed) curNode.style.listStyleImage = "url(" + curNode.flipClosed + ")"; + + if (curNode.className == null || curNode.className == "") curNode.className = "flipFolderClosed"; + } else { + curNode.className = "flipStatic"; + if (flipImages && !curNode.style.listStyleImage) { + if (!curNode.flipStatic) curNode.flipStatic = flipImg_static; + curNode.style.listStyleImage = "url(" + curNode.flipStatic + ")"; + } + } + + if (!curNode.flipOpen) curNode.flipOpen = flipImg_open; + if (!curNode.flipClosed) curNode.flipClosed = flipImg_closed; + + if (curNode.flipIsOpen) openFlip(curNode); + } + } + + startElement.initialised = true; +} + +function rootOfFlip(flipID, startElement) { + + function containsFlip(startElement, flipID) { + var flipFound = false; + var i = 0; + while (i < startElement.childNodes.length && !flipFound) { + var curNode = startElement.childNodes[i]; + flipFound = (curNode.flipID == flipID) ? true : containsFlip(curNode, flipID); + i++; + } + return flipFound; + } + + var rootFlip = null; + + if (!startElement || !startElement.nodeName) { + var aUL = document.getElementsByTagName("UL"); + var i = 0; + while (rootFlip == null && i < aUL.length) { + var curUL = aUL[i]; + if (curUL.nodeName == "UL" && curUL.className == "flipMenu") rootFlip = rootOfFlip(flipID, curUL); + i++; + } + return rootFlip; + } + + if (startElement.childNodes) for (var i = 0; i < startElement.childNodes.length; i++) { + var curNode = startElement.childNodes[i]; + if (curNode.flipID == flipID || containsFlip(curNode, flipID)) rootFlip = curNode; + } + + return rootFlip; +} + +function getCookie(cookieName) { + var allCookies = document.cookie; + var indexStr = allCookies.indexOf(cookieName + "="); + if (indexStr == -1) return ""; + indexStr = allCookies.indexOf("=", indexStr) + 1; + var endStr = allCookies.indexOf(";", indexStr); + if (endStr == -1) endStr = allCookies.length; + return unescape(allCookies.substring(indexStr, endStr)); +} + +function inArray(someID, someArray) { + for (var i = 0; i < someArray.length; i++) if (someArray[i] == someID) return true; + return false; +} + +function getMenuState(startElement) { + if (!startElement.childNodes || startElement.childNodes.length == 0) return ""; + + var openItems = ""; + var aUL = startElement.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + var curNode = aUL[i]; + var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode; + if (curNode.style.display == "" && parentFlip.flipID) openItems += " " + parentFlip.flipID; + } + return openItems; +} + +function putMenuState(startElement) { + if (!startElement.childNodes || startElement.childNodes.length == 0) return false; + + var aUL = startElement.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + var curNode = aUL[i]; + var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode; + if (inArray(parentFlip.flipID, aOpenItems)) { + openFlip(parentFlip); + if (typeof prevFlipRoot == "undefined") { + var testRoot = rootOfFlip(parentFlip.flipID); + if (testRoot.flipID == parentFlip.flipID) prevFlipRoot = testRoot; + } + } + } +} + +function saveMenuState() { + if (flipSaveMenuState) { + var aUL = document.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + var curUL = aUL[i]; + var curID = curUL.id ? curUL.id : i; + if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=" + getMenuState(curUL) + ";"; + } + } +} + +function loadMenuState() { + var aUL = document.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + var curUL = aUL[i]; + var curID = curUL.id ? curUL.id : i; + if (curUL.className == "flipMenu") { + var savedState = String(getCookie(cookiePrefix + curID)); + if (savedState != "") { + aOpenItems = savedState.split(" "); + putMenuState(curUL); + } + } + } + + addEvent(window, "unload", saveMenuState); +} + +function clearMenuState(flipMenuID) { + if (typeof flipMenuID == "undefined") { + var aUL = document.getElementsByTagName("UL"); + for (var i = 0; i < aUL.length; i++) { + var curUL = aUL[i]; + var curID = curUL.id ? curUL.id : i; + if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=;"; + } + } else document.cookie = cookiePrefix + flipMenuID + "=;"; +} + +cookiePrefix = document.location.pathname + "_"; + +addEvent(document, "click", toggleFlip); +if (flipInitOnLoad) addEvent(window, "load", initFlip); diff --git a/system/doc/top/templates/index.html.src b/system/doc/top/templates/index.html.src new file mode 100644 index 0000000000..935bb11c80 --- /dev/null +++ b/system/doc/top/templates/index.html.src @@ -0,0 +1,180 @@ + + + + + + + Erlang/OTP #release# + + + + + + +
+ + + +
+
+
+Erlang/OTP #release#
+
+
+

+Welcome to Erlang/OTP, a complete
+development environment
+for concurrent programming.
+

+
+
+
+
+

+ +Some hints that may get you started faster + +

+ +
    + +
  • +The complete Erlang language is described in the +Erlang Reference Manual. +An Erlang tutorial can be found in + +Getting Started With Erlang. +

    +In addition to the documentation here Erlang is described in several recent books like: +

    + +

    +These books are highly recommended as a start for learning Erlang. +

    +
  • +
  • Erlang/OTP is divided into a number of OTP applications. An application normally contains +Erlang modules. Some OTP applications, +such as the C interface erl_interface, are written in other languages and have no Erlang +modules. + +

    +

  • On a Unix system you can view the manual pages from the command +line using +
    +    % erl -man <module>
    +
    +

    + +

  • You can of course use any editor you like to write Erlang +programs, but if you use Emacs there exists editing support such as +indentation, syntax highlighting, electric commands, module name +verification, comment support including paragraph filling, skeletons, +tags support and more. See the +Tools application for details. +

    +There is also an + +Erlang plugin (ErlIDE) for Eclipse if you prefer a more graphical +environment. ErlIDE is under active development with new features in almost every release. +

  • When developing with Erlang/OTP you usually test your programs +from the interactive shell (see +Getting Started With Erlang) where you can call individual +functions. There is also a number of tools available, such as the graphical Debugger, the process +manager Pman and table +viewer TV. +

    Also note that there are some shell features like history list +(control-p and control-n), in line editing (Emacs key bindings) and +module and function name completion (tab) if the module is loaded. +

    + +

  • OpenSource users can ask questions +and share experiences on the +Erlang questions mailing list.

    + +

  • Before asking a question you can browse the +mailing list archive and read the Frequently +Asked Questions.

    + +

  • Additional information and links of interest for Erlang programmers can be found on the Erlang Open Source site +http://www.erlang.org. +

    + +

+ +
+ +Copyright © 1999-2009 +Ericsson AB + +
+
+
+
+ + diff --git a/system/doc/top/templates/otp_top.css b/system/doc/top/templates/otp_top.css new file mode 100644 index 0000000000..1c6d27bd8d --- /dev/null +++ b/system/doc/top/templates/otp_top.css @@ -0,0 +1,53 @@ + BODY { background: white } + + BODY { font-family: Verdana, Arial, Helvetica, sans-serif } + TH { font-family: Verdana, Arial, Helvetica, sans-serif } + TD { font-family: Verdana, Arial, Helvetica, sans-serif } + P { font-family: Verdana, Arial, Helvetica, sans-serif } + + .header { background: #222; color: #fff } + .top { background: #efe } + .otp { background: #efe } + .erlang { background: #ffe } + .otp2 { background: #efe } + .app { background: #ffe } + + a:link { color: blue; text-decoration: none } + a:active { color: blue; text-decoration: none } + a:visited { color: blue; text-decoration: none } + body { + margin: 0; + padding: 0; + border: 0; + overflow: scroll; + height: 100%; + max-height: 100% + } + #container { + width: 100%; + margin: 10px auto; + background-color: #fff; + } + #leftnav { + float: left; + width: 200px; + margin: 0; + padding: 1em; + } + #content { + margin-left: 220px; /* set left value to WidthOfFrameDiv */ + border-left: 1px solid red; + } + + .innertube { + margin: 15px; /* Magins for inner DIV inside each DIV (to provide padding) */ + } + + * html body{ /* IE6 hack */ + padding: 0 0 0 200px; /* Set value to (0 0 0 WidthOfFrameDiv)*/ + } + * html #maincontent{ /* IE6 hack*/ + height: 100%; + width: 100%; + } + diff --git a/system/doc/top/templates/system.html.src b/system/doc/top/templates/system.html.src new file mode 100644 index 0000000000..761bc96ed0 --- /dev/null +++ b/system/doc/top/templates/system.html.src @@ -0,0 +1,281 @@ + + + + Erlang/OTP #release# + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ General +
+ + + + + +
+ + Introduction + + +
+
+About Erlang, OTP, Erlang/OTP and this documentation +
+ + + + + +
+ + Installation Guide + + +
+
+The Erlang/OTP Installation Guide +
+ + + + + +
+ + System Principles + + +
+
+Starting, stopping and configuring the Erlang runtime system +
+ + + + + +
+ + Embedded System + + +
+
+Erlang in an Embedded System +
 
+ Programming in Erlang +
+ + + + + +
+ + Erlang Reference Manual + + +
+
+Description of data types, language constructs and more +
+ + + + + +
+ + Getting Started + + +
+
+Getting started with Erlang +
+ + + + + +
+ + Programming Examples + + +
+
+Examples of using records, funs, list comprehensions and the bit syntax +
+ + + + + +
+ Efficiency Guide + +
+
+Learn how to write efficient programs in Erlang +
+ + + + + +
+ Interoperability Tutorial + +
+
+About interoperating with programs written in other programming languages +
 
+ Working with OTP +
+ + + + + +
+ + Design Principles + + +
+
+Structure your programs with applications, supervisors and generic behaviors (gen_server, gen_event and gen_fsm). +Also use the built in error logger. +
+ + + + + +
+ OAM Principles + +
+
+OTP Operation and Management Principles +
 
+ +
+ + + + diff --git a/system/doc/top/templates/toc_.html.src b/system/doc/top/templates/toc_.html.src new file mode 100644 index 0000000000..5e79bc0ac8 --- /dev/null +++ b/system/doc/top/templates/toc_.html.src @@ -0,0 +1,105 @@ + + + + Erlang/OTP #release# + + + + +
+Erlang/OTP #release#
+
+ + + +

+

+Erlang/OTP +
Installation Guide + +
System Principles + +
Embedded System + +
+ +

+

+ +

+

+Working with OTP +
Design Principles + + +
OAM Principles + +
+ +

+

+Applications +#applinks# +
+ +

+http://www.erlang.se + + + -- cgit v1.2.3