After a detailed look on the web, the only project I was able to find is Garbochess. It is BSD licensed, but it looks like it is not longer under development (latest commit was a year ago). I also was not able to find anything about the strength of the engine (ELO).
Major drawbacks JS has (in my opinion) are:
- No real multithreading support. (That's a damn hard limit on computation speed.)
- No real memory management. (JS does it for you, but I imagine you as a programmer can allocate much more efficiently.)
- Apparently, limits on stack size, CPU usage etc. are imposed on JavScript Code (although Icannot give hard evidence right now).
- I cannot imagine JS being very efficient with hash tables.
- I imagine it being difficult to load opening books or endgame tablebases during runtime (slow) or preloading it on startup (still slow and your bandwidth won't like it).
Well, technically, these are reasons why it would be hard to code a good chess engine - but who wants an engine with 1800 Elo? (Well, still enough for one or two standard deviations of players' practical purposes.)
And in the end: it's client side. If you need something client side, don't do it in a browser. If it can be done on the server, use it! E. g., using PHP, pipes and the UCI protocol, you'll get much further and you can let the server compute it for all clients (and I know it has been done before, but can't tell exactly where I've seen it).
Typed arrays can be used for the hash table. It's client side browser based. The UI fires up a web worker which then uses UCI for comms, meaning the same code can also run offline in node.js (or jxCore), which in turn means it can be used in Arena and Winboard etc.
While Lozza is hand-written, another route (licence permitting) is to use Emscripten and asm.js etc to automate trans-compilation from C/C++. Some people have done this for Stockfish. I'm unsure the resulting ELO (probably better than Lozza) but the code is of course unreadable.