Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Add XHTML fix to prototype.js

Gecko-based browsers, doesn't like using innerHTML with incorrect XML
fragments like "<link>". Change it to "<link></link>".

Found in IceApe 2.0.6, but also present in SeaMonkey 2.6.1 and Iceweasel 9.0.1

Upstream ticket https://prototype.lighthouseapp.com/projects/8886-prototype/tickets/1294
latest commit ec9e434660
Witold Baryluk authored December 26, 2011
Octocat-spinner-32 erl_lib Move ct_expand to erl_lib/ December 01, 2011
Octocat-spinner-32 erl_lib_core Update lists.erl patch, to new erl_lib_core directory structure December 19, 2011
Octocat-spinner-32 erl_src Add more modules from stdlib, move to src, handle includes December 19, 2011
Octocat-spinner-32 erljs_code To make git not deletate directory. It would be good to have it empty April 16, 2010
Octocat-spinner-32 erljs_html More demo page updates December 26, 2011
Octocat-spinner-32 examples Show partial pi results more often December 26, 2011
Octocat-spinner-32 from_otp Initial import April 12, 2010
Octocat-spinner-32 js_lib Add XHTML fix to prototype.js December 26, 2011
Octocat-spinner-32 js_src Tweak scheduler default settings. December 26, 2011
Octocat-spinner-32 praca Move libs.txt to praca/ directory. May 08, 2011
Octocat-spinner-32 reveng Add copyright info to almost all files December 04, 2011
Octocat-spinner-32 tests Add few small tests with spaces in lists. December 26, 2011
Octocat-spinner-32 tools Add tests_arithmetic which tests arithmetic December 19, 2011
Octocat-spinner-32 .gitignore Update .gitignore patch, to new erl_lib_core directory structure December 19, 2011
Octocat-spinner-32 BUGS Commit everything accumulated in last years November 28, 2011
Octocat-spinner-32 COPYING Add copyright info to almost all files December 04, 2011
Octocat-spinner-32 HISTORY Some history in quite chronological order April 14, 2010
Octocat-spinner-32 OTHERS Add information about alternative Erlang Interpreter (directly from .… July 18, 2010
Octocat-spinner-32 PLATFORMS
Octocat-spinner-32 README Implement erlang:now/0 BIF December 26, 2011
Octocat-spinner-32 STATUS Cleanup continues - renames, updates December 01, 2011
Octocat-spinner-32 TESTING Commit everything accumulated in last years November 28, 2011
Octocat-spinner-32 TODO Update README and TODO, to make it more cohherent December 01, 2011
Octocat-spinner-32 WAYS Added possible ways to implement erlang in browser, and what I'm doing April 16, 2010
Octocat-spinner-32 build.sh Automatically create links and clone repos December 15, 2011
README
erljs - Run Erlang in JavaScript

This projects allows you to run Erlang code directly
in the webbrowser!

If you do not know what Erlang is, please read:
 http://www.erlang.org/ - Erlang programming language home page
 http://en.wikipedia.org/wiki/Erlang_(programming_language)

In short, it is functional language designed for fault-tolerant
and concurrant systems. Because of its design it also fits
nicely as language of choice for modern dynamic web pages.


You will find examples in examples/ directory.

Some motivation can be find in STATUS



Status

Currently we have pretty good implementation of some
basic stuffs. Some modules seems to be fully functional.

What is working:

- data types: atom, integer, float, tuple, list.
  - to do: funs make_fun2
- arithmetic
- pattern matching and tests
- tuple operations
- list operations
- calling functions, from the same and other modules, with and without fqn,
- funs
- lists comprehension (without bitstring generators),
- tail recursion
- spawning processes, and message passing, scheduler,
- exceptions, stack trace for exceptions (not yet fully correct).

Differences:
 - messages are passed using references
 - scheduler is designed for small number of processes, so do not run more than 200 processes
 - integer arithmetic is limited to 2^53
   - i have simple biginteger.js library, but i would want to make overhead for small integers small,
   - i also want to remove from it some unneded parts for us.
   - after overflow
 - operations on floats and intergers can be intermixed.
   - for example one can `F rem 10`, even when F is float.
 - float exceptions aren't checked and thrown
   - JS have floating point exceptions disabled, but Erlang have them enabled, emulation will be slow.
   - so it is possible to have NaN, +-Inf, or underfloat in variables.
   - possible solution: add erljs:check_nan(X) test a variable.
 - erlang:now/0 have 1ms real resolution, in some cases about 15ms (Windows XP).
   (erljs will use 1us resolution timer in Chrome started with --enable-benchmkaring,
    it is however only accurate for measuring relative times)


Both Erlang and JS are dynamically typed languages. Unfortunettelly JS is weakly typed,
but Erlang is strongly typed. This means that we need to perform some additional
checks in JS to be sure that types are correct. There is also problem
with boxing/unboxing on JS side, but this should work automatically.
Most important problem is that JavaScript doesn't have arbitrar sized integers,
and the fact that JS doesn't have separate integer and float types.

Currently bignums and integers are really floats! On some
operations we know will result in floats but we want integer
we perform rounding/truncation, but this can be buggy for
sufficientyl big numbers.

Todo:
 - bit strings,
 - tracing,
 - phash,
 - cleanup,
 - dynamic module loading.
 - lots of other small things, see TODO file
 

Tested mainly in Opera 10.52 on Linux. Some tests in Chrome and Epiphany also.

Should also work in Rhino (Mozilla's JS engine written in Java). Usefull
for unittesting, etc.

http://www.erlang.se/~bjorn/beam_file_format.html
Something went wrong with that request. Please try again.