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
Octocat-spinner-32 erl_lib Move ct_expand to erl_lib/
Octocat-spinner-32 erl_lib_core Update lists.erl patch, to new erl_lib_core directory structure
Octocat-spinner-32 erl_src Add more modules from stdlib, move to src, handle includes
Octocat-spinner-32 erljs_code To make git not deletate directory. It would be good to have it empty
Octocat-spinner-32 erljs_html More demo page updates
Octocat-spinner-32 examples Show partial pi results more often
Octocat-spinner-32 from_otp Initial import
Octocat-spinner-32 js_lib Add XHTML fix to prototype.js
Octocat-spinner-32 js_src Tweak scheduler default settings.
Octocat-spinner-32 praca Move libs.txt to praca/ directory.
Octocat-spinner-32 reveng Add copyright info to almost all files
Octocat-spinner-32 tests Add few small tests with spaces in lists.
Octocat-spinner-32 tools Add tests_arithmetic which tests arithmetic
Octocat-spinner-32 .gitignore Update .gitignore patch, to new erl_lib_core directory structure
Octocat-spinner-32 BUGS Commit everything accumulated in last years
Octocat-spinner-32 COPYING Add copyright info to almost all files
Octocat-spinner-32 HISTORY Some history in quite chronological order
Octocat-spinner-32 OTHERS Add information about alternative Erlang Interpreter (directly from .…
Octocat-spinner-32 PLATFORMS Commit everything accumulated in last years
Octocat-spinner-32 README Implement erlang:now/0 BIF
Octocat-spinner-32 STATUS Cleanup continues - renames, updates
Octocat-spinner-32 TESTING Commit everything accumulated in last years
Octocat-spinner-32 TODO Update README and TODO, to make it more cohherent
Octocat-spinner-32 WAYS Added possible ways to implement erlang in browser, and what I'm doing
Octocat-spinner-32 build.sh Automatically create links and clone repos
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.