Welcome. Pharo 7!

 

정말 오랜만에 올려보는 Pharo 소식입니다. 웬지 5, 6 버전은 거의 실행만 시켜본듯한 느낌이 드는건 기분탓이겠죠?…(야!)

1. linux 와 osx 버전의 64bit 버전이 안정화가 되었습니다. 다만 windows 버전은 아직 개발버전 상태군요.
2. 드디어 git client 가 공식적으로 도입 되었으며 metacello 대신 기본 CMS 가 git 으로 지정되었군요.
3. 오래된 nautilus 라는 class browser 대산에 Calypso 라는 도구가 기본 browser 로 들어갔다는데.. 이건 저도 안써봐서 잘…
4. IoT 에 대한 부분이 추가된듯 합니다. https://github.com/pharo-iot/PharoThings 를 참고하라고 하는군요.
5. UnifiedFFI 에 대한 부분이 있는데.. FFI 는 예전에 cogvm 볼때 살펴봤던 기억이 있습니다만… 기존 FFI 에 비해서 뭔가 달라진점이 있는지는 따로 살펴봐야 겠습니다.
6. 이건 pharo git 페이지에 나오는 내용입니다만.. 원래 pharo 에서 사용하던 stream class 가 zinc 패키지의 stream 클래스를 기본 stream 으로 사용하기로 했나보네요. zinc 는 pharo 의 network 을 담당하는 클래스 패키지입니다.
7. pharo 의 기본 개발과정에 jenkins 2 를 도입했나보군요…. 이야…. git 의 힘이란…

개인적인 입장에서 본다면.. 일단 git 의 도입 하나만으로도 충분히 환영할 일이 아닌가 싶습니다. 지난 버전에서는 64bit vm 과 32bit vm 의 Pharo Image 가 서로 호환되지 않았었는데.. 이 부분에 대한 개선이 있었는지도 개인적인 관심사이기는 하네요.

http://pharo.org/news/pharo7.0-released

ImmX11Plugin 관련 기록

1) 2016년에 누군가가 감사하게도 opensmalltalk-vm 에 해당되는 플러그인을 릴리즈 해주셨습니다.

http://forum.world.st/commit-3717-Add-ImmX11Plugin-td4894889.html

 

2) 제가 써놓은 글을 제가 모르겠습니다. 이 블로그에 정리한줄 알았는데 wiki 에 정리해 뒀네요. 무슨 내용인지를 모르겠어서 역으로 분석중(?) 입니다..

http://workspace.onionmixer.net/mediawiki/index.php?title=Linux_cogvm_xim_howto

 

일단 squeak.cog.spur 에는 ImmX11Plugin 이 빌드된걸 확인했는데… pharo.cog.spur 에는 해당되는 플러그인이 없습니다. 좀 더 살펴봐야 할듯 싶습니다. 지난번의 글로 보아 plugin 의 로딩으로 끝나는 것이 아니라 그 뒤에 CogVM 의 소스를 직접 수정한 경험이 있기 때문에 아무래도 여러가지 고민은 좀 해봐야 하지 않겠나 싶습니다. 대략 주말중으로는 테스트를 해봐야 하겠네요 😀

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