[公告] 欢迎来到高级语言虚拟机圈子

RednaxelaFX 2010-01-06
关注各种高级语言虚拟机(high-level language virtual machine,HLL VM)的设计与实现,泛化至各种高级语言的运行时的设计与实现,也会涉及动态编译、GC、动态语言的编译等话题。总之大方向是高级语言的语义的实现方式就对了 >_<
我会开一些帖子作为资料堆积用,例如书籍、论文、教程、文章及相关链接收集。请不要以讨论方式回复这些资料堆积帖,以便于保持资料的“整洁”;不过可以另外开对应的讨论帖放讨论。
也欢迎大家开讨论帖对HLL VM的话题热烈讨论。请大家告诉我你们都对HLL VM的什么方面感兴趣 ^_^
也可以发娱乐帖,各种稀奇古怪的与HLL VM相关的代码之类的可以放在这个分类下。
需要圈子管理员权限的同学请PM我,有兴趣帮我一起收集和整理HLL VM相关资料那是最好不过了。

讨论范围包括但不限于:
Java Virtual Machine
- Oracle(Sun) HotSpot VM (OpenJDK: GPLv2+CE)
-- Da Vinci Machine
-- JSR 292 Backport
-- UltraViolet™ Virtual Machine
- Azul HotSpot VM
- IBM J9
- Oracle JRockit
- Apache Harmony (Apache License v2)
- Jikes RVM (EPLv1)
- Kaffe (GPL)
- SableVM (LGPLv2.1)
- Oracle(Sun) CLDC HotSpot Implementation (GPLv2)
  - Oracle(Sun) Project Monty virtual machine
  - PSPKVM (GPL)
- Oracle(Sun) Squawk VM (GPLv2)
- Oracle(Sun) JavaCard VM
- Oracle(Sun) Maxine VM (GPLv2)
- Oracle(Sun) Mackinac
- Metacircular Research Platform (MRP) (Apache License, EPLv1, GPLv2+CE)
- Moxie JVM (Apache License v2)
- JamVM (GPL) (Sourceforge Project Page)
- JamaicaVM
- cacaovm (GPL)
- Jelatine JVM (GPLv3)
- NanoVM (GPL)
- Open Mika (BSD)
- Wonka VM
- Aegis VM (LGPL)
- joeq (GPL)
- kissme (GPL)
- VMKit (University of Illinois Open Source License)
- Jupiter
- K virtual machine
- NSIcom CrE-ME
- LaTTe (BSD)
- Esmertec JBed
- Symantec JIT
- TowerJ DynaFlex
- Microsoft Java Virtual Machine / jview
- HP Chai VM
- Oracle OJVM
- Oracle JVM (考据中,不知道这个跟OJVM是什么关系)
- Mozilla ElectricalFire (Netscape PL)
- MachJ
- JanosVM
- Xam (GPLv3)
- E-bunny
- Jeode EVM
- shuJIT
- Inprise "javacomp" JIT
- OpenJIT (BSD)
- TYA
- Open Runtime Platform (ORP) (Intel Open Source License)
- Jaos
- AromaVM
- Sun Exact VM
- Sun JavaInJava
- IKVM.NET (custom BSD-like)
- TinyVM (MPLv1)
- Ovm (简介) (New BSD)
- GCJ (GPL)
- Excelsior JET
- RoboVM (license)
- JC Virtual Machine (LGPL)
- MiniJavaVM
- ArmJVM
- Rava (Ruby License)
- RUVA (Ruby License)
- Japhar
- Joker-vm (GPL)
- Jato (GPLv2+LE)
- Hornet (BSD)
- Another Open JavaCard Virtual Machine (GPL)
- Sun Spotless JVM
- Nemesis JVM
- nanokit
- Aplix JBlend
- Orto JVM
- Avian (ISC License) Github链接
- JnJVM
- Doppio (MIT License) Java on CoffeeScript
- Mysaifu JVM
- node-jvm
- Fiji
http://rtjava.blogspot.com/2011/07/fijivm-real-time-java-vm-overview.html

Google Dalvik VM (Apache License v2)

NestedVM (Apache License v2)

Harissa

DynamicJava (BSD)
这是个Java实现的Java源码解释器,而不是JVM规范定义的那类JVM

FIJI ForthIsh Java Interpreter (GPL)

Eve Virtual Machine

Parrot VM (Artistic License 2.0)

Common Language Infrastructure (CLI)
- Common Language Runtime (CLR) (.NET Framework) open sourcing!
- .NET Compact Framework
- .NET Micro Framework (Apache License v2)
- Mono (LGPL/GPL/X11)
- DotGNU Portable .NET (GPL)
- Shared Source Common Language Infrastructure (SSCLI) (Microsoft Shared Source Common Language Infrastructure license)
- Open Runtime Platform (ORP) (Intel Open Source License)
- StarJIT
- ILDJIT (GPL)

Dynamic Language Runtime (DLR) (Ms-PL)

Dis Virtual Machine

●Python
- Python (CPython) (PSFL)
- PyPy (MIT)
- Pyston (Apache License v2)
- Jython (PSFLv2)
- IronPython (Ms-PL)
- Unladen Swallow (Apache License v2)
- Pynie
- Psyco (MIT)
- Stackless Python (PSFL)
- tinypy (MIT)
- python-on-a-chip (p14p) (GPLv2)

●Ruby
- Ruby 1.8.x (MRI) (Ruby License)
- Ruby 1.9 (YARV) (Ruby License)
- Rubinius (BSD)
- MacRuby (Ruby License)
- JRuby (CPL/GPL/LGPL)
- IronRuby (Ms-PL)
- MagLev (MIT)
- Ruby Enterprise Edition
- BlueRuby
- The Ludicrous JIT Compiler (BSD)
- XRuby (Apache License v2)
- Cardinal
- Ruby.NET (new BSD)
- HotRuby (Ruby License)
- tinyrb (Ruby License)
- mirc

●JavaScript
- Google V8 (new BSD)
- Mozilla JägerMonkey/TraceMonkey/Tamarin/SpiderMonkey (MPL 1.1/GPL 2.0/LGPL 2.1)
- Apple Nitro (SquirrelFish Extreme)/SquirrelFish/JavaScriptCore (LGPL)
- KDE KJS (LGPLv2)
- Opera Carakan
- DMDScript
- Managed JScript
- JScript
- JScript 9 "Chakra"
- Narcissus
- BESEN (OwnLicense+AGPLv3)
- Jurassic (Ms-PL)
- IronJS (Apache License v2)
- lv5
- Tachyon
- Ejscript (Embedthis Open Source Software License)
- Qt v4
- MuscalietJS (mcjs): An Extensible Portable Layered JavaScript Engine

●ActionScript 3
- Adobe AVM2
- Lightspark
- JITB

Groovy (BSD)

●Perl
- Perl
- Pugs
- Rakudo
- MoarVM (Rakudo的新VM)
- Tycho (by Matthew Wilson)

●PHP
- PHP (PHP License v3.01)
- HipHop VM (PHP and Zend License)
- HippyVM (Github)(MIT License)
- Phalanger (SS-PL)
- Zend
- Quercus

Smalltalk
- Smalltalk
- GNU Smalltalk (GPL)
- Squeak (SqL) http://www.squeakvm.org/index.html
- GemStone/S
- Pharo (MIT/Apache Lisence)
- Strongtalk (new BSD)
- Cog (MIT License)
- Jtalk (MIT License)

Self
- Self
- Klein Metacircular Virtual Machine Kit

Newspeak (Apache License v2/SqL/MIT)

Erlang (MPL)
- BEAM
- Erjang

●Prolog

Mercury

Pure

●BASIC

●COBOL

Factor (BSD)

●Neko
- Neko VM (LGPL)

Potion (MIT)

Forth

●Scheme
- Ikarus (GPLv3)
- WeScheme

●Common Lisp

HLVM (BSD)

Ela

SQLite Virtual Database Engine

被称为“编译型语言”的解释器实现:

●C
- Ch

●C++
- Cint

嗯……HaskellOCaml之类的语言也是有解释器实现的,也算在内。
说来OCaml的解释器是direct-threaded的,这个肯定得拿来说说。在Forth社区以外确实讨论各种threaded技巧的氛围不怎么浓。

还有些有趣的语言也是用解释器实现的。Fortress也有解释器,有机会也要拿来挖掘挖掘。

常用作嵌入式脚本的:

●Lua
- Lua (MIT)
- LuaJIT (MIT/X)

Terra
http://terralang.org

Squirrel (zlib/libpng)

AngelScript (zlib)

JewelScript (zlib/libpng)

Monster Script

一些游戏引擎里的脚本引擎:

吉里吉里2
- TJS2 (GPLv2)

吉里吉里3
- Risse

●RealLive
- RealLive
- rlvm (GPLv3)
- xclannad

●AliceSoft
- System 3.x
- System 4.x

●NScripter
- NScripter
- ONScripter

YU-RIS

Hot Soup Processor (HSP)

●Stuff スクリプトエンジン

Wintermute Engine (WME)

Unreal
- UnrealScript

Torque Game Engine
- TorqueScript

Z Machine

有些EL(表达式语言,expression language)的实现也可以拿来讨论:

MVEL

janino (New BSD)

Unified Expression Language (JSR 245)
- JUEL
- Resin EL

●JSP 2.0 EL
- Commons EL

JEXL
●JEval
●SpEL
●OGNL

●IK Expression
Aviator
JSEL

一些模板引擎里其实也有树遍历式的解释器

Velocity (Apache License v2)

虽然自身不是HLL VM,但经常被用于HLL VM实现的:

Low Level Virtual Machine (LLVM) (University of Illinois Open Source License)
- llvm-py

年代久远的虚拟机:

●SECD

动态编译的先驱:

●Oberon

还有像Half-Life 2的SourceMod插件里也有JIT…SourcePawn?
看这里 http://www.bailopan.net/blog/?p=73

各种机器像是游戏机的模拟器里自然也有高效的编译器或者说binary translator的实现
Dolphin Emulator

一些JIT库:

Xbyak (BSD)

asmjit (MIT)

jitasm (BSD)

libjit (LGPLv2.1)
- libjit-linear-scan-register-allocator (LGPL)

一些GC库:

Boehm GC

Qish (LGPL)

生成解释器的工具:

Vmgen

Generic Interpreter

下面这个有点离题,但非常强悍:

Valgrind
虽然被许多人认为是内存访问的检查工具,但实际上是x86-to-x86的动态即时编译器,非常非常强……
Willam2004 2011-02-08
好多啊~
endiya 2011-09-26
好多好多都不知道...
wupuyuan 2013-05-07
发现这个帖子居然人气不旺啊,支持一下,另外这里的资料很全,值得学习。
现在在看Jikes RVM,是IBM的实验用虚拟机,非商用,仅仅实验各类的技术。
我觉得做得比较独特的地方是线程的锁机制。

RVM不是将 Java 线程直接映射到操作系统线程(但是最终还是需要的),而是在“虚拟处理器”上实现 Java 线程的复用。 虚处理器是基于一个操作系统线程实现的。每个虚处理器都记弽一个 CPU 核的标识,处理器的标识保存在一个与用的寄存器中。J9 为每一个 CPU 核创建一个虚处理器的本质是根据硬件 CPU 的核心数维护一组 OS 线程。这么做的优点是在同一个 JVM实例中,需要同步线程争抢的是 JVM 层的“虚处理器”资源,从而避免了操作系统层的资源争夺;相对而言,返举做的缺点就是维护返一组 OS 线程可能会造成浪费,不过对亍服务器级的应用来说可以忽略。但是Java 应用不其它程序之间在操作系统资源层的争夺依然不可避免。
Global site tag (gtag.js) - Google Analytics