opensmalltalk-vm 개요(overview) 초벌번역

OVERVIEW
개요

Cog is an evolution of the Squeak Back-to-the-future Smalltalk virtual machine that provides a number of different Smalltalk virtual machines.

Gog 는 여러가지 형태로 공급되고 있던 서로 다른 Smalltalk 가상머신의 미래를 위한 혁명입니다.

 

The VMs are developed in Smalltalk, using all the dynamic and reflective facilities of the Squeak/Pharo Smalltalk system.

VM 들은 Smalltalk 으로 개발되었으며 Squeak/Pharo Smalltalk 시스템에 동적(dynamic) 그리고 반영(reflective-런타임 시점에서 스스로를 관리 및 수정) 을 사용할 수 있는 편의를 제공합니다.
As such, developing in Cog is a delight. The Smalltalk framework comprising the various Cog VMs is translated into C by its Slang component to produce VM source that is combined with platform-specific support sources and compiled via a C compiler to obtain a fast production VM.

따라서 Cog 에서 개발한다는건 즐거운 일입니다. 다양한 CogVM 에서 구성된 smalltalk 프레임워크는 Slang 컴포넌트에 의해 C 로 변환되며 플랫폼 고유의 지원소스(support source) 와 결합된 VM 소스를 생성하며 이는 C 컴파일러를 통해 production VM 을 빠르게 컴파일 합니다.
This directory tree includes the output of Slang for various configurations of “Cog VM” and the associated platform support code, plus build directories that can be used to produce production VMs.

이 디렉토리에는 트리에는 다양한 “Cog VM” 구성 및 관련된 플랫폼 지원코드용 Slang 출력 및 production VM 을 생성하는데 사용할 수 있는 빌드 디렉토리를 포함하고 있습니다.

 

This directory tree also includes an instance of the Smalltalk Cog development system, suitable for developing the VM in Smalltalk, and for generating new VM sources.

이 디렉토리 트리는 Smalltalk Cog 개발 시스템의 인스턴스를 포함하고 있으며 Smalltalk 에서 VM 을 개발하고 새로운 VM 소스를 생성해내는데 적합합니다.

 

The “Cog VM” comes in a bewildering variety of forms. The first distinction is between Squeak/Croquet VMs that run Squeak, Pharo, Cuis, Croquet images and their ilk, and between Newspeak VMs that run Newspeak.

“Cog VM” 은 고르기 힘들 정도의 다양한 형태로 제공됩니다. 첫번째 차이점은 Squeak, Pharo, Cuis, Croquet 이미지 및 같은 종류를 실행하는 Squeak / Croquet VM 과 Newspeak 을 실행하는 Newspeak VM 에 있습니다.(역자주: http://newspeaklanguage.org/ 은 Self 및 Smalltalk 을 바탕으로하는 새로운 언어라고 하는군요)

 

Another distinction is between Stack, Cog and Sista VMs.

VM 사이의 또 다른 차이점으로는 Stack Cog 및 Sista VM 들 입니다.(Sista VM 의 경우는 http://www.mirandabanda.org/cogblog/about-cog/ 에서 언급되고 있습니다만…. 일단 속도가 빠른걸 장점으로 꼽고 있네요)

 

Stack VMs are those with context-to-stack mapping that optimise message sending by keeping method activations on a stack instead of in contexts.

Stack VM 은 context 가 아닌 Stack 에서 메서드 활성화(activation)을 유지함으로서 (smalltalk 에서의) 메시지 전송을 최적화 하는 context-to-stack 매핑을 합니다.

 

These are pure interpreters but are significantly faster than the standard context-based Interpreter VM.

이러한 VM 들은 순수한 인터프리터 기반이지만 표준 context 기반의 인터프리터 VM 보다 훨씬 빠릅니다.
Cog VMs add a JIT to the mix, compiling methods used more than once to machine code on the fly.

Cog VM은 JIT 를 같이 제공합니다, 이는 두번이상 사용되는 경우 컴파일된 메서드를 제공함으로서 코드를 컴파일 작업을 거지치 않고 즉시 처리되게 할 수 있습니다.

 

Sista VMs, as yet unrealised and in development, add support for adaptive optimization that does speculative inlining at the bytecode-to-bytecode level.

아직 개발단계인 Sista VM 은 bytecode-to-bytecode 수준(level)의 추론적 직렬을 수행하는 “적응형 최적화 지원”을 추가합니다.

 

These are under development and targeted for release in 2015.

이런것들은 아직 개발중이며 2015년에 출시될 예정입니다(지금은 2017년이죠 :D)
Another distinction is between “v3” VMs and Spur VMs.

또 다른 차이점은 “v3” VM 과 Spur VM 입니다.(…이제는 vm 의 포맷도 최적화를 위해 바뀌는 모양입니다)

 

“v3” is the original object representation for Squeak as described in the back-to-the-future paper.

“v3” 는 back-to-the-future 문서에 설명된대로 Squeak 의 원본 객체 표현입니다.

 

Spur, as described on the www.mirandabanda.org blog, is a faster object representation which uses generation scavenging, lazy forwarding for fast become, a single object header format common to 32 and 64 bit versions, and a segmented heap that can grow and shrink, releasing memory back to the host OS.

www.mirandabanda.org 블로그에 설명 된 바와 같이 Spur 는 객체의 빠른 생성 및 소거, 빠른 동작을 위한 지연 전송, 32 비트 및 64 비트 버전에 공통적 인 단일 객체 헤더 형식, 그리고 확장 또는 축소 가능한 분할(segmented) 힙, 메모리를 HOST OS 로 다시 해제(releasing) 반환할 수 있도록 만들어져 있습니다.

 

Newspeak, Squeak 5.0 and Pharo 5 use Spur.

Newspeak, Squeak 5.0 과 Pharo 5 는 Supr 를 사용합니다.

 

Another distinction is between normal single-threaded VMs that schedule “green” Smalltalk light-weight processes above a single-threaded VM, and multi-threaded VMs that share the VM between any number of native threads such that only one native thread owns the VM at any one time, switching between threads on FFI calls and callbacks or on Smalltalk process switches when Smalltalk processes are owned by threads.

또 다른 차이점으로는 단일 스레드 VM 에서 “green” Smalltalk 경량(light-weight) 프로세스를 스케줄링 하는 일반 단일스레드 VM 이며, 또한 한번에 하나의 기본 스레드만 VM을 소유하도록 하며 VM을 공유하는 모든 기본 스레드 간에 VM을 공유하는 VM, Smalltalk 프로세스가 스레드에 의해 소유 될 때 FFI 호출과 콜백 또는 Smalltalk 프로세스 스위치의 스레드 간 전환 등이 있습니다.
This architecture offers non-blocking FFI calls and interoperability with multiple native threads, but does /not/ provide true concurrency.

이 구조는 넌블럭킹 FFI 호출과 여러 원시 스레드와의 상호 운용성을 제공하지만 진정한 동시성을 제공하는 것은 아닙니다.

 

This multi-threaded support is as yet experimental.

진정한 동시성을 제공하는 멀티 스레드는 아직 실험적입니다.
nscogsrc/vm- Newspeak Cog V3
nsspursrc/vm- Newspeak Cog Spur
nsspurstacksrc/vm- Newspeak Stack Spur
nsstacksrc/vm- Newspeak Stack V3
sistasrc/vm- Smalltalk Sista V3
spursistasrc/vm- Smalltalk Sista Spur
spursrc/vm- Smalltalk Cog Spur
spur64src/vm- Smalltalk Cog Spur 64-bit
spurstacksrc/vm- Smalltalk Stack Spur
spurstack64src/vm- Smalltalk Stack Spur 64-bit
src/vm- Smalltalk Cog V3
stacksrc/vm- Smalltalk Stack V3

ugly 한 CogVM 의 XIM 사용이 가능해졌습니다~

Pharo_XIM_06

 

 

아싸!~

아는것도 없는데 작업하느라 피를 토할뻔했네요…후우…

 

그래도 잘 돼서 다행입니다. linux 에 pharo 를 쓰는 사람은 아마도 한국에 저 혼자밖에 없는듯 합니다만..

혹여있을 multibyte-linux-pharo 사용자분들께 도움이 되었으면 좋겠습니다.

 

관련된 내용은 이쪽에 따로 정리해놨으니 필요한 binary 도 이쪽에서 받아주시기 바랍니다 😀

linux 에서 CogVM 을 compile 하고 XIM 을 사용하는법

cogvm을 compile할때의 간단한 삽질메모

squeak에서 사용하는 CogVM을 빌드하는법

빌드법은 아래의 URL을 참고

http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-December/155322.html

 

ImmX11Plugin patch는 최신버전을 srpm에서 가져온다

http://arm.koji.fedoraproject.org/koji/buildinfo?buildID=103149
compile time에서 bochs가 필요할거같으나 실제로는 compile잘 안되니 필요없다
cogvm/unixbuild/bld/plugins.ext

이 파일에서 BochsIA32Plugin 부분 삭제
cogvm/unixbuild/bld/plugins.int

이 파일은 cogvm 내부에서 사용하는 plguin의 목록
두개를 새로이 추가
ImmX11Plugin
DBusPlugin

 

=======================================

아.. 우울합니다 ㅋㅋㅋ