Pharo5 :: system reporter

 

Pharo 나 squeak 은 전통적으로 시스템에 대한 부분을 workspace 에서 확인하게 되어있습니다만… 최근의 Pharo5 를 보니 기존의 방법을 그대로 사용할 수 없는 대신 새로은 도구가 들어갔습니다.

 

바로 System Reporter 인데요.. 현재 사용하고 있는 vm 의 구동시 여러가지 옵션등을 알 수 있는 툴입니다. plugin 및 vm 자체에 대한 사용 옵션등이 바로 그것인데요.. 내가 현재 사용하고 있는 VM 에 대해서 여러가지를 알 수 있어서 보다 유용하다고 생각합니다. 그렇다고 예전과 비슷한 방법이 없는건 아닙니다. 그건 다른 글에서 소개하도록 하겠습니다.

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