aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tools
AgeCommit message (Collapse)Author
2010-08-20Merge branch 'tm/fix-cover-html-escaping' into devBjörn Gustavsson
* tm/fix-cover-html-escaping: Fix cover's HTML-generation logic to escape ampersands in source code OTP-8776
2010-08-10Rewrite ethread libraryRickard Green
Large parts of the ethread library have been rewritten. The ethread library is an Erlang runtime system internal, portable thread library used by the runtime system itself. Most notable improvement is a reader optimized rwlock implementation which dramatically improve the performance of read-lock/read-unlock operations on multi processor systems by avoiding ping-ponging of the rwlock cache lines. The reader optimized rwlock implementation is used by miscellaneous rwlocks in the runtime system that are known to be read-locked frequently, and can be enabled on ETS tables by passing the `{read_concurrency, true}' option upon table creation. See the documentation of `ets:new/2' for more information. The ethread library can now also use the libatomic_ops library for atomic memory accesses. This makes it possible for the Erlang runtime system to utilize optimized atomic operations on more platforms than before. Use the `--with-libatomic_ops=PATH' configure command line argument when specifying where the libatomic_ops installation is located. The libatomic_ops library can be downloaded from: http://www.hpl.hp.com/research/linux/atomic_ops/ The changed API of the ethread library has also caused modifications in the Erlang runtime system. Preparations for the to come "delayed deallocation" feature has also been done since it depends on the ethread library. Note: When building for x86, the ethread library will now use instructions that first appeared on the pentium 4 processor. If you want the runtime system to be compatible with older processors (back to 486) you need to pass the `--enable-ethread-pre-pentium4-compatibility' configure command line argument when configuring the system.
2010-07-28Fix cover's HTML-generation logic to escape ampersands in source codeTom Moertel
When cover generates HTML files and embeds source code within them, it does not escape ampersands in the source code. These bare ampersands get misinterpreted by web browsers as HTML character-entity references; as a result, source code containing ampersands renders improperly. This small patch fixes the problem by causing bare ampersands to be escaped into as "&" character-entity references.
2010-06-11Update release notesBjörn Gustavsson
2010-06-11Merge branch 'egil/eprof' into devErlang/OTP
* egil/eprof: Fix eprof to handle error cases Dialyzer cleanup for eprof Fix fprof_SUITE to use new eprof API Switch pattern API for eprof profile with mfa Update eprof documentation Update eprof_SUITE with more basic tests Rename sorting choices for eprof Teach eprof to align text output Add dump functionality to eprof Add log functionality to eprof Update eprof tests to reflect new eprof Add start timestamp to eprof profiling Teach eprof to use the new breakpoints OTP-8706 egil/eprof eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores).
2010-06-10Update version numbersBjörn Gustavsson
2010-06-09Fix eprof to handle error casesBjörn-Egil Dahlberg
2010-06-09Dialyzer cleanup for eprofBjörn-Egil Dahlberg
2010-06-09Fix fprof_SUITE to use new eprof APIBjörn-Egil Dahlberg
2010-06-09Switch pattern API for eprof profile with mfaBjörn-Egil Dahlberg
2010-06-09Update eprof documentationBjörn-Egil Dahlberg
The eprof documentation is updated to reflect the new eprof application and some API changes and convenience functions.
2010-06-09Update eprof_SUITE with more basic testsBjörn-Egil Dahlberg
2010-06-09Rename sorting choices for eprofBjörn-Egil Dahlberg
- Added {sort, mfa} option
2010-06-09Teach eprof to align text outputBjörn-Egil Dahlberg
2010-06-09Add dump functionality to eprofBjörn-Egil Dahlberg
2010-06-09Add log functionality to eprofBjörn-Egil Dahlberg
2010-06-09Update eprof tests to reflect new eprofBjörn-Egil Dahlberg
2010-06-09Add start timestamp to eprof profilingBjörn-Egil Dahlberg
2010-06-09Teach eprof to use the new breakpointsBjörn-Egil Dahlberg
2010-06-07erlang-eunit: remove runtime dependency on cl packageChris Bernard
Follow the GNU recommendation of not introducing runtime dependencies on the Common Lisp package in ELisp packages that will be distributed for widespread use. In practice this means it's ok to use cl macros but not functions.
2010-06-07Add Emacs EUnit feature: run recentChris Bernard
This determines the most recent invocation of EUnit and runs it again -- whether one test or all tests in a module were run (and if all a module's tests were run, whether cover compilation was involved). This can be especially handy when one test is being run repeatedly, eliminating the need to position the cursor in the desired test just to run it. Default keybinding: C-c C-e l
2010-06-07Add Emacs EUnit feature: auto-saveChris Bernard
If the variable 'erlang-eunit-autosave' is non-nil, buffers will be automatically saved just before running tests -- the "Do you want to save?" prompt will be inhibited. This can be useful, reducing the save-compile-load-test cycle to just one keychord.
2010-06-07erlang-eunit: Optionally run code coverage analysis during eunit testsKlas Johansson
Add a number of features to the emacs mode which make it easier to work with eunit test cases while keeping track of code coverage. * C-cC-ec: Compile the module under test for code coverage analysis, run tests and show the results of the coverage analysis in a new buffer. * C-c-C-ev: Compile the current module for code coverage analysis. * C-cC-ea: Show the results of the coverage analysis in a new buffer.
2010-06-07erlang-eunit: Made alternative locations of files more flexibleKlas Johansson
Previously there were only two options: either the EUnit test file was placed directly within the test directory or within the same directory as the source file. Now a list of candidate locations are supported. This way more than two alternative locations are supported as well as arbitrarily deep directory structures (i.e. test/eunit/x_tests.erl). The default behaviour is still the same, but it's possible to specify locations by setting the following two variables: erlang-eunit-src-candidate-dirs erlang-eunit-test-candidate-dirs
2010-06-01Merge branch 'dgud/emacs-catch-improvements' into devErlang/OTP
* dgud/emacs-catch-improvements: Improved indentation of old catch. Added more type highlighting and fixed record indentation with types.
2010-06-01Improved indentation of old catch.Dan Gudmundsson
An example that didn't work previously. case Foo of {ok, X} -> ok; _ -> catch file:close(FD) end.
2010-06-01Added more type highlighting and fixed record indentation with types.Dan Gudmundsson
Type highlighting reported by Jay Nelson non_neg_integer() will highlight purple but pos_integer() does not. Closing record indentation problem reported by Maxim Treskin: -record(state, { sequence_number = 1 :: integer() }).
2010-06-01erlang-flymake: Document in READMEKlas Johansson
2010-06-01erlang-flymake: Make the syntax check command configurableKlas Johansson
2010-06-01erlang-flymake: By default pass <app>/include and <app>/ebin to compilerKlas Johansson
Hopefully this covers at least some of the common cases and makes the flymake support more usable as is. The purpose of including the ebin directory is to support things like behaviours and parse transforms.
2010-06-01erlang-flymake: Include in MakefileKlas Johansson
2010-06-01erlang-flymake: Syntax check erlang code on the fly (using flymake)Klas Johansson
2010-05-28OTP-8647 Xref adds calls to operators when {builtins,true}Hans Bolinder
When given the option {builtins,true} Xref now adds calls to operators.
2010-05-26Merge branch 'mh/escript-erlang-mode' into devErlang/OTP
* mh/escript-erlang-mode: Associate files using interpreter "escript" with Erlang mode
2010-05-26Merge branch 'cb/emacs-eunit-run-current-test' into devErlang/OTP
* cb/emacs-eunit-run-current-test: Add Emacs EUnit utility feature: run current test function.
2010-05-26Merge branch 'mh/fix-record-indentation' into devErlang/OTP
* mh/fix-record-indentation: Fix indentation of records with line breaks inside lists
2010-05-26Merge branch 'mh/inferior-erlang-cmd-uniq' into devErlang/OTP
* mh/inferior-erlang-cmd-uniq: inferior-erlang: specify command to run, uniquify buffer names
2010-05-26Merge branch 'mh/erlang-mode-imenu-arity' into devErlang/OTP
* mh/erlang-mode-imenu-arity: Let imenu distinguish functions by arity
2010-05-24Set erlang-mode-map when loading erlang.elMagnus Henoch
Create and assign the erlang-mode keymap to erlang-mode-map once erlang.el is loaded, not the first time it is used. This way of doing it follows the Emacs Lisp convention described at http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips-for-Defining.html and also makes it easier for users to customize the keymap. Remove the now unneeded functions erlang-keymap-init and erlang-mode-commands. Also move the definition of inferior-erlang-use-cmm, so it is available when defining erlang-mode-map.
2010-05-20Let imenu distinguish functions by arityMagnus Henoch
Make the function names used by M-x imenu contain the function arity as well as the name. This makes it possible to jump to all functions of the same name, as opposed to only the one that is defined first. For example, in the following module there is now a way to jump directly to foo/1: -module(foo). foo() -> ok. bar() -> error. foo(A) -> {ok, A}.
2010-05-18Fix indentation of records with line breaks inside listsMagnus Henoch
Trying to indent this piece of code by hitting TAB on each line: foo() -> [#foo{ foo = foo}]. used to cause an error. Fix by ignoring errors when trying to skip backwards from a record. Also add this test case to test.erl.orig and test.erl.indented.
2010-05-18inferior-erlang: specify command to run, uniquify buffer namesMagnus Henoch
Add a new feature to the command inferior-erlang: when called with a prefix argument, prompt for the command to execute to start the Erlang shell. When possible (i.e., in Emacs 23 and later), allow tab completion as in a normal shell. Also create the shell buffer in such a way that, if uniquify-buffer-name-style is not nil and several Erlang shell buffers are started in different directories, the names of those buffers reflect their working directories instead of being *erlang*, *erlang*<2>, etc.
2010-05-18Associate files using interpreter "escript" with Erlang modeMagnus Henoch
A file whose first line contains "#!/usr/bin/env escript" should be opened in erlang-mode, even if its name doesn't end in ".erl". Add an entry to interpreter-mode-alist to that effect.
2010-05-18Add Emacs EUnit utility feature: run current test function.Chris Bernard
This determines the current test function under point (cursor), whether the active buffer contains a test module (foo_tests) or the module itself (foo), then compiles the source module (and test module if present) and runs that test function. Since this added a third testing feature, there was some natural duplication that needed to be factored out. The notion of 'compile and run tests' was decoupled from exactly which tests should be run. The definitions of default keybindings were converted to a list for clarity and conciseness.
2010-05-11Merge branch 'dgud/emacs-21-fix' into devErlang/OTP
* dgud/emacs-21-fix: Remove usage of 'font-lock-preprocessor-face' if not available
2010-05-04Merge branch 'rd/erlang-eunit' into devErlang/OTP
* rd/erlang-eunit: erlang-eunit.el: Require cl, as it is used
2010-05-03Remove usage of 'font-lock-preprocessor-face' if not availableDan Gudmundsson
i.e. in emacs-21
2010-03-22erlang-eunit.el: Require cl, as it is usedRalf Doering
erlang-eunit.el (part of erlang-mode) uses "flet", which is only available if emacs package cl was loaded. The docs of the CL package suggest that '...packages installed in Emacs must not load "CL" at run time.' We honour this by using eval-when-compile. This fixes warnings when byte-compiling erlang-eunit.el with: emacs -batch -f batch-byte-compile erlang-eunit.el The warning fixed is: In erlang-eunit-compile-and-run-tests: erlang-eunit.el:146:4:Warning: `(save-some-buffers (&optional any) nil)' is a malformed function This bug was reported initially against Ubuntu packages, see https://bugs.launchpad.net/bugs/541893 for reference Signed-off-by: Ralf Doering <[email protected]>
2010-03-22Merge branch 'dgud/emacs-bugfixes' into devErlang/OTP
* dgud/emacs-bugfixes: Fix another -spec() problem Add missing elisp files to the the release target Fix electric semi-colon and tuples inside lists OTP-8530 dgud/emacs-bugfixes Fixed emacs-mode installation problems and some other minor issues.
2010-03-15Fix another -spec() problemDan Gudmundsson