Planet Squeak

blogs about Squeak, Pharo, Croquet and family
planet squeak - planet squeak es - planet squeak jp - planet croquet - planet squeak code - planet smalltalk

April 02, 2021

PharoWeekly

Write your own extension to the Pharo 90 debugger

Well done the debugging department of Pharo

by Stéphane Ducasse at April 02, 2021 08:51 AM

April 01, 2021

PharoWeekly

Pharo 90 refactoring support improves steadily…

Check extract method for a productivity boost.

Well done Evelyn from Semantics S.R.L.

by Stéphane Ducasse at April 01, 2021 09:46 AM

March 18, 2021

Pierce Ng

Dual Boot Windows 10 and Xubuntu 20.04, Two Disks, LUKS

I've set up dual boot on my laptop as per the post title. The article is long because of the many screenshots and as such has its own page.

March 18, 2021 09:56 PM

March 12, 2021

PharoWeekly

PharoJS on Pharo90

Hi everyone,
We have been working on porting PharoJS to Pharo 9 for a while now.And we managed to reach the end of the tunnel this week.All PharoJS tests are now green on Pharo 9.
Find out more at: https://github.com/PharoJS/PharoJS
Dave & Noury

by Stéphane Ducasse at March 12, 2021 04:02 PM

[Ann] Pharo accepted as GSOC

Dear all,
great news I want to share with you: Pharo has been selected to be part of GSOC 2021
https://summerofcode.withgoogle.com/organizations/?sp-search=pharo#4667274369171456
Thank you to the great team of admins for making this happen: Oleksandr Zaitsev, Gordana Rakic and Juan Pablo Sandoval Alcocer !

We will send updates soon on the student selection process soon.Regards,– 
Serge Stinckwich

https://twitter.com/SergeStinckwich

by Stéphane Ducasse at March 12, 2021 02:02 PM

March 08, 2021

PharoWeekly

The magic of being able to debug locally a exception produced in production :)

by Stéphane Ducasse at March 08, 2021 08:39 PM

February 19, 2021

PharoWeekly

More than 2000 more Unit tests!

By improving the SUnit logic run on our build servers, we are now running more than 2000 unit tests that were ignored in case of parametrized tests.

Lessons learned: avoid duplication and different logic because duplication often bits you.

Pharo consortium.

by Stéphane Ducasse at February 19, 2021 11:55 AM

February 16, 2021

PharoWeekly

New VM for M1 machines for testing

Hello happy Pharoers
Today we could access our building where the M1 machine is and Pablo packaged itso that you can test the first version. 
Pablo wrote a little blog post for you.
https://thepharo.dev/2021/02/16/first-apple-m1-pharo-version/
Let us know since we do not have the M1 at hand and waiting to be able to make it accessible from our build farm… but we are not responsible for it and we were waiting.

The crew was fixing other VM glitches. So we will be ready soon to focus on the Jit version.

S

by Stéphane Ducasse at February 16, 2021 07:41 PM

February 15, 2021

PharoWeekly

More stability running Jenkins Pharo tests

Just a little post to mention that we migrated our Jenkins build servers to use the latest Pharo VM and we saw a lot more stability.

Soon we will integrate the VM tests to our image builds.

S.

by Stéphane Ducasse at February 15, 2021 11:01 AM

February 09, 2021

PharoWeekly

New refactorings

Hello all,

These weeks I added new refactorings, following I will give some examples of them.
1. Create accessors with lazy initialization

This refactoring create accessors for variables with lazy initialization, for example:
– we have a class

Object subclass: #SomeClass
instanceVariableNames: ‘stringVar’
classVariableNames: ”
package: ‘Example’
– we can create accessors with lazy initialization executing this script:

(RBCreateAccessorsWithLazyInitializationForVariableRefactoring 
variable: #stringVarclass: SomeClass 
classVariable: false 
defaultValue: ”’example”’) execute

the result of this refactoring is:

SomeClass >> stringVar
    ^ stringVar ifNil: [ stringVar := ” ]

SomeClass >> stringVar: anObject
    stringVar := anObject
2. Extract setUp refactoring (is the first version by the moment, it need to be improved)

This refactoring create a setUp method from a code fragment.
You can select an interval of some code in a test method and call this refactoring to create a setUp method implementing that code and replace the code by nothing. The selected class need to be a subclass of TestCase.

For example:

– given  a class

TestCase subclass: #SomeTest
instanceVariableNames: ”
classVariableNames: ”
package: ‘Example’

SomeTest >>testFoo
     self x.
     self assert: true

SomeTest >>  self x
    self doSomething

– To extract setUp method you can execute this script:

(RBExtractSetUpMethodRefactoring extract: (10 to: 16)
from: #testFoo
in: SomeTest) execute

the result of this refactoring is:

SomeTest >> setUp
    super setUp.
    self x.

SomeTest >> testFoo
    self assert: true

3. Move method to class side refactoring (This refactoring is still awaiting review)

This refactoring move a method to class side.
For example:
– given a method 

ClassX >> annotatedBlockMarkup
   ^ ‘@@’
– we can execute the refactoring with this script:
(RBMoveMethodToClassSideRefactoring 
method: (ClassX >> #annotatedBlockMarkup) 
class: ClassX) execute.

the result of this refactoring is:
ClassX >> annotatedBlockMarkup
  ^ self class annotatedBlockMarkup

ClassX class >> annotatedBlockMarkup
  ^ ‘@@’
Any suggestions or comment of these refactorings are welcome. I hope these new refactorings are useful to you .

Regards,
Evelyn C.

by Stéphane Ducasse at February 09, 2021 12:41 PM

February 08, 2021

PharoWeekly

Pharo at Fosdem’21

Hello

Here is the link to the FOSDEM stand. There are many excellent videos.

https://stands.fosdem.org/stands/pharo/

Thanks a lot for the people that created the stand.

S.

by Stéphane Ducasse at February 08, 2021 11:08 AM

February 03, 2021

PharoWeekly

Godotalk….

From the discord server….

https://www.youtube.com/channel/UC-ICLtriRHxPh9B8FMT_q_Q

by Stéphane Ducasse at February 03, 2021 05:02 PM

February 02, 2021

PharoWeekly

Pharo on Apple M1

We just got a new apple m1 machine. And Pharo is running on it.

Under Rosetta, Pharo is slow but running. Now the first good news is that the Pharo Stack VM (no JIT) is running much faster natively. We will make the VM public soon. And we will start working on checking the ARM JIT for M1. We have some pending tasks around the VM and other that should be done first. So we will expect to start working in it in a week max 10 days.

The Pharo consortium.

by Stéphane Ducasse at February 02, 2021 06:39 PM

January 30, 2021

Pierce Ng

Windows 10

My trusty Linux laptop finally stopped working, and the standby is now too slow for any useful work.

The replacement laptop comes with Windows 10 Home. With Visual Studio 2019 community edition, Dolphin Smalltalk built cleanly. With Cygwin, the OpenSmalltalk VM for Squeak too built cleanly. This VM runs both Squeak and Cuis. The Pharo edition of OpenSmalltalk VM failed to build; ditto Pharo's fork of the VM.

Next, to set up dual boot.

January 30, 2021 01:16 PM

January 21, 2021

Historical - Vanessa Freudenberg

Emulating Smalltalk-76

If you got as excited as me about Dan Ingalls' live Smalltalk-76 demo on an actual 1970's Xerox Alto, you may have wanted to try it yourself. 


For one, you could try my Smalltalk-78 VM. Smalltalk-78 is a leaner version of Smalltalk-76 but very much identical in syntax semantics. 

It is also possible to run the full Smalltalk-76 environment, and here is how:

First, you need an emulator for the Alto computer. Ken Shiriff posted a nice piece on how to run ContrAlto on Windows. It is written in C# and I got it to work on my Mac using Mono. So here's a step-by-step:

  1. Install Mono from http://www.mono-project.com/download/
  2. Download ContrAlto-mono.zip from https://github.com/livingcomputermuseum/ContrAlto/releases
  3. Download this Smalltalk-76 disk image: http://www.bitsavers.org/bits/Xerox/Alto/disk_images/chm/xmsmall.zip
  4. Unzip both ContrAlto-mono.zip and xmsmall.zip in the same folder.
  5. In a terminal, change to the ContrAlto directory and run mono Contralto.exe. This opens the Alto screen in a new window, and the emulator control in the terminal. 
  6. (if you get an error about a missing SDL library at this point, install that via homebrew using brew install sdl2)
  7. At the emulator's ">" prompt, type load disk 0 xmsmall.dsk and then start:
    $ mono Contralto.exe
    ContrAlto v1.2.2.0 (c) 2015-2017 Living Computers: Museum+Labs.
    Bug reports to joshd@livingcomputers.org

    You are at the ContrAlto console.  Type 'show commands' to see
    a list of possible commands, and hit Tab to see possible command completions.
    >load disk 0 xmsmall.dsk
    Drive 0 loaded.
    >start                  
    Alto started.

    >
  8. In the Alto screen window, type resume xmsmall.boot to start up Smalltalk-76:
      
  9. And now you should see Smalltalk-76 running!
  10. There is no explicit "save" option. The OOZE object swapping system continuously writes objects to the disk. Use "quit" from the main menu to flush all objects back to disk.
Note that you will need a 3 button mouse to properly interact with the system. On my MacBook, I installed MagicPrefs to emulate a third mouse button. After installing, in MagicPref's "MacBook Trackpad" section, for "Three Finger Click" choose "Middle Click".

You will also need some keyboard shortcuts to access the special characters in Smalltalk-76:
ctrl A             ≤ (less or equal)
ctrl B             bold
ctrl C             user interrupt
ctrl F             ≡ (identical)
ctrl G             ◦ (index operator)
ctrl I             italic
ctrl N             ≠ (not equal)
ctrl O             ↪ (quote)
ctrl Q             ⇑ (return)
ctrl R             ≥ (greater or equal)
ctrl S             's (eval operator)
ctrl T             ┗  (prompt)
ctrl U             ¬ (unary minus)
ctrl X             clear emphasis
ctrl /             ⇒ (if then)
ctrl =             ≡ (identical)
ctrl shift =       ≠ (not equal)
ctrl \             ≠ (not equal)
ctrl ]             ⌾ (create point)
ctrl [             ◦ (index operator)
ctrl :             ⦂ (open colon)
ctrl '             ↪ (literal quote)
ctrl <             ≤ (less or equal)
ctrl >             ≥ (greater or equal)
shift -            ¬ (unary minus)
cursor down        doit (in dialog view)
To learn Smalltalk-76, the User Manual is a good starting point:
http://xeroxalto.computerhistory.org/Filene/Smalltalk-76/.document.press!1.pdf

Have fun!

by Vanessa (noreply@blogger.com) at January 21, 2021 12:47 AM

January 20, 2021

PharoWeekly

About a confortable and cozy place…

Hi all

I was reading this bug entry and the analysis made by Guille P. and I came to the conclusion that our lovely system shield us from a lot and that our guys are spending time to make our life easier.

I want to thank them for building this confortable and cozy place I can happily and super fast code.

S

by Stéphane Ducasse at January 20, 2021 05:17 PM

January 18, 2021

PharoWeekly

[Ann] Foliage a static site generator

[ANN] I’ve just released my static site generator foliage: https://norbert.hartl.name/blog/2021-01-17-foliage-released.html

Norbert

by Stéphane Ducasse at January 18, 2021 04:11 PM

January 13, 2021

PharoWeekly

Pharo Mooc testimonies

“J’ai trouvé ça très intéressant, beaucoup plus que prévu ! je regrette de ne pas m’y être mis plus tôt. J’ai enfin l’impression de vraiment faire de la POO ! Ou à l’inverse je me rend que je n’en faisais pas vraiment…”

Translated 🙂

“I found it very interesting, much more than I expected! I regret not having started earlier. I finally feel like I’m really doing OOP! Or on the other hand I realize that I wasn’t really doing it…”

Working on a new mooc on advanced design

by Stéphane Ducasse at January 13, 2021 12:41 PM

January 12, 2021

PharoWeekly

[Ann] Beta Testing ARM64 Linux & Windows

In the last months, we have been working on the implementation of a MIT-licensed ARMv8 Just-In-Time compiler for Pharo VM. We would like to announce that a beta first version of our JIT backend is available for beta-testing for ARM Linux and Windows machines. 


We are very happy with the advance in this subject, as we have not only implemented a new backend but we have added more than 2500 tests of the JIT, the primitives, code generation, plugins, and the VM in general. Also, we are generating a lot of documentation and improving the process to really democratize the development of the VM. 

Below there are details on how to obtain the versions for testing it.

The following sections give more details of the current status, and the following steps including Apple Silicon, Windows, and Linux ARM64.

Current Status

Our objective is to have a running JIT for the new aarch64 architecture (ARM 64bits). This task includes not only a new backend for the JIT compiler but also adding support for external libraries, dependencies, and the build process. This means having a working VM with comparable features as the one existing in Intel X64. We are targeting all the major operating systems running on this platform (Linux, OSX, Windows). Each of them presents different restrictions and conditions.
This is the current status:

Status By Platform

Linux

We have a working version of the VM. It is using the same code-base and build process for both architectures (Intel X64 / ARM aarch64). A version can be compiled and executed in all the platforms. Also, we have integrated the build using Open Build Services (OBS) to generate packages for all the mainstream distributions. Currently, the version for Debian-like systems (Debian, Ubuntu, Raspberry pi OS, etc) is available and ready to beta test; the details for installing them are in the end of the mail. Versions for ARCH-based and RPM-based systems are in the working (If you want to get them or to test them please contact us, so we can pass on the detail of how to get them).

Windows

We have extended the build process to fully support Microsoft Visual Studio compilers and more flexibility to select the targets, also we are building it to run in Windows ARM. To correctly run the VM in Windows it is needed to build all dependencies for aarch64. In this path, we have a working Intel x64 version with Cygwin and MSVC, and a MSVC version for aarch64 (ARM64).The ARM64 version is available to be beta-testing on machines with this architecture.The Details are at the end of the mail.

OSX

Our third target is to have a working version for the newest Apple silicon. We are acquiring the corresponding hardware to test and to address the differences in the API exposed to JIT applications. As it is the case of the Windows VM, there is no need to change the machine code generation backend, as it is the same that has been implemented for Linux; but to compile external libraries and particularities of the new OS version.
Thanks for your support. In the meantime, we will continue giving you news about the current state and where are we going.

Beta Testing – Linux

For Debian like distributions, the instructions are the following.

1) Add a new APT source, usually modifying a file in /etc/apt/sources.list.d/, for example, we can add the pharo.list file with the following content. Also, we need to register the key of the repository. These steps should be done only once. We are giving a little script for modifying the configuration. It is only needed to execute line by line.

For Raspbian:

echo “deb https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/Raspbian_10/ ./” >> pharo.list

sudo cp pharo.list /etc/apt/sources.list.d/pharo.list

wget https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/Raspbian_10/Release.key

sudo apt-key add Release.key

For Ubuntu:

echo “deb https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/xUbuntu_20.04/ ./” >> pharo.list

sudo cp pharo.list /etc/apt/sources.list.d/pharo.list

wget https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/xUbuntu_20.04/Release.key

sudo apt-key add Release.key

2) Update the repository to take the current versions

sudo apt update

3) Install Pharo9 VM

sudo apt install pharo9 libgit2

4) In case of using the interactive version (with UI) check if the packages libsdl2-2.0-0  and libcairo2 are installed (Usually they are installed, but depends what it is installed in the system). These are not needed for the headless execution or if it is not used by the image.

Getting the images:

The images can be downloaded using zero-conf, the latest image is ready to be used. It can be done with:

wget -O – get.pharo.org/64/90 | bash

Running Pharo

pharo Pharo.image eval 42 factorial

Or interactive

pharo Pharo.image –interactive

Windows Testing

A version of the VM is ready to be tested in Windows ARM64. A zip containing the VM is available in:
https://files.pharo.org/vm/pharo-spur64/Windows-ARM64/PharoVM-9.0.0-4df0e562a-Windows-ARM64-stockReplacement-bin.zip

As in Linux, the latest image is compatible with this version of the VM.

Error reporting

In case of encountering errors please report them attaching:

 – crash.dmp file and PharoDebug.log
 – Version of the image using (in case of any community project loaded, the names of those)

 – Complete machine version (the result of executing uname -a)
 – Complete information about the Linux distribution

 – Steps for reproducing the error (if needed)

Thanks for the effort!!
— 
Pablo Tesone.
tesonep@gmail.com

by Stéphane Ducasse at January 12, 2021 11:53 AM

January 02, 2021

Program in Objects

What is the Glamorous Toolkit?

Here is a groundbreaking tool for software developers.

Glamorous Toolkit is the moldable development environment. It is a live notebook. It is a flexible search interface. It is a fancy code editor. It is a software analysis platform. It is a data visualization engine. All in one.

Tudor Girba gives a nice presentation about it:

Here’s the open source code: https://github.com/feenkcom/gtoolkit.

This may revolutionize software development in the coming years. It’s very exciting.

by smalltalkrenaissance at January 02, 2021 02:45 PM

December 20, 2020

PharoWeekly

Understanding Base58 Encoding Medium article

Hi,

I wrote and published another article in Concerning Pharo:

Understanding Base58 Encoding

It is all about integers.

This introductory article shows a bit how easy and how much fun it is to do integer and binary encoding and decoding as well as printing and parsing in Pharo. It also tries to explain Base58 Encoding from a first principles point of view.

Sven

by Stéphane Ducasse at December 20, 2020 05:33 PM

December 13, 2020

PharoWeekly

Roassal on ARM64 windows

Guille P. just sent us the following screenshot showing Roassal on ARM64 Windows….

This implies that Athens and Cairo are building correctly :).

by Stéphane Ducasse at December 13, 2020 06:35 PM

ARM Rasp first positive feedback

As doing is better than many hand waving we want to share with you the following information.

Hi,

This is fantastic news on several levels – the new JIT itself, but even more the new approach, process, infrastructure and tests.

(Sorry, but this is a long/technical mail).

A week ago I was one of the first people outside the development team to be able to test the new ARM64 JIT VM on hardware they did not even test on.

In particular I used an Amazon AWS EC2 T4g.micro instance (1 GB) with Ubuntu Server 20.04.1 LTS.

These machines use an ARM64 CPU (AWS Graviton2, Neoverse N1, Cortex-A76, ARM v8).

ubuntu@ip-172-30-0-23:~/test$ uname -a
Linux ip-172-30-0-23 5.4.0-1030-aws #31-Ubuntu SMP Fri Nov 13 11:42:04 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

ubuntu@ip-172-30-0-23:~/test$ lscpu 
Architecture:                    aarch64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
CPU(s):                          2
On-line CPU(s) list:             0,1
Thread(s) per core:              1
Core(s) per socket:              2
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       ARM
Model:                           1
Model name:                      Neoverse-N1
Stepping:                        r3p1
BogoMIPS:                        243.75
L1d cache:                       128 KiB
L1i cache:                       128 KiB
L2 cache:                        2 MiB
L3 cache:                        32 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
Vulnerability Spectre v2:        Not affected
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs

My reaction after one hour ?

Wow, wow, wow, this is incredible. It all just works and it seems pretty fast as well. I played with the vm/image for a couple of minutes and so far everything worked as expected and I had no crashes at all.

The order of magnitude of 1 tinyBenchmarks is very similar to other (server) machines:

"'1894542090 bytecodes/sec; 146296146 sends/sec'" "arm64"
"'2767567567 bytecodes/sec; 258718969 sends/sec'" "macOS"
"'1227082085 bytecodes/sec; 109422120 sends/sec'" "aws"
"'2101590559 bytecodes/sec; 166532391 sends/sec'" "t3 lxd"

Here is a benchmark in the HTTP space, how fast can ZnServer respond to multiple concurrent requests over the local network:

$ ./pharo Pharo.image eval --no-quit 'ZnServer startDefaultOn: 1701' &
$ ab -k -n 1024 -c 8 http://localhost:1701/small
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 102 requests
Completed 204 requests
Completed 306 requests
Completed 408 requests
Completed 510 requests
Completed 612 requests
Completed 714 requests
Completed 816 requests
Completed 918 requests
Completed 1020 requests
Finished 1024 requests
Server Software:        Zinc
Server Hostname:        localhost
Server Port:            1701
Document Path:          /small
Document Length:        124 bytes
Concurrency Level:      8
Time taken for tests:   0.268 seconds
Complete requests:      1024
Failed requests:        0
Keep-Alive requests:    1024
Total transferred:      317440 bytes
HTML transferred:       126976 bytes
Requests per second:    3814.45 [#/sec] (mean)
Time per request:       2.097 [ms] (mean)
Time per request:       0.262 [ms] (mean, across all concurrent requests)
Transfer rate:          1154.76 [Kbytes/sec] received
Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    2  19.0      0     267
Waiting:        0    2  19.0      0     267
Total:          0    2  19.0      0     267
Percentage of the requests served within a certain time (ms)
 50%      0
 66%      0
 75%      0
 80%      0
 90%      0
 95%      0
 98%      0
 99%     42
100%    267 (longest request)

That is 3800 req/s with 8 concurrent threads, each response 124 bytes. And the output document is dynamically generated each time !

Now a cached static binary document, first a small one (64 bytes):

$ ab -k -n 1024 -c 8 http://localhost:1701/bytes
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 102 requests
Completed 204 requests
Completed 306 requests
Completed 408 requests
Completed 510 requests
Completed 612 requests
Completed 714 requests
Completed 816 requests
Completed 918 requests
Completed 1020 requests
Finished 1024 requests
Server Software:        Zinc
Server Hostname:        localhost
Server Port:            1701
Document Path:          /bytes
Document Length:        64 bytes
Concurrency Level:      8
Time taken for tests:   0.214 seconds
Complete requests:      1024
Failed requests:        0
Keep-Alive requests:    1024
Total transferred:      256000 bytes
HTML transferred:       65536 bytes
Requests per second:    4778.62 [#/sec] (mean)
Time per request:       1.674 [ms] (mean)
Time per request:       0.209 [ms] (mean, across all concurrent requests)
Transfer rate:          1166.65 [Kbytes/sec] received
Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    2  12.3      0     207
Waiting:        0    2  12.3      0     207
Total:          0    2  12.3      0     207
Percentage of the requests served within a certain time (ms)
 50%      0
 66%      0
 75%      0
 80%      0
 90%      0
 95%      0
 98%      5
 99%     64
100%    207 (longest request)

That is 4700 req/s

Now a larger one, 1024 bytes:

$ ab -k -n 1024 -c 8 http://localhost:1701/bytes/1024
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 102 requests
Completed 204 requests
Completed 306 requests
Completed 408 requests
Completed 510 requests
Completed 612 requests
Completed 714 requests
Completed 816 requests
Completed 918 requests
Completed 1020 requests
Finished 1024 requests
Server Software:        Zinc
Server Hostname:        localhost
Server Port:            1701
Document Path:          /bytes/1024
Document Length:        1024 bytes
Concurrency Level:      8
Time taken for tests:   0.228 seconds
Complete requests:      1024
Failed requests:        0
Keep-Alive requests:    1024
Total transferred:      1241088 bytes
HTML transferred:       1048576 bytes
Requests per second:    4484.93 [#/sec] (mean)
Time per request:       1.784 [ms] (mean)
Time per request:       0.223 [ms] (mean, across all concurrent requests)
Transfer rate:          5308.34 [Kbytes/sec] received
Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     0    2  16.2      0     227
Waiting:        0    2  16.2      0     227
Total:          0    2  16.2      0     227
Percentage of the requests served within a certain time (ms)
 50%      0
 66%      0
 75%      0
 80%      0
 90%      0
 95%      0
 98%      0
 99%     41
100%    227 (longest request)

Still 4400 req/s – 1024 requests finished in about 0.25 seconds, transferring 1Mb.

These are really good numbers !

And under this load, the image+vm remained totally stable.

Great, great work and thanks again everyone for the effort. You can be very proud for this achievement.

Sven

by Stéphane Ducasse at December 13, 2020 08:46 AM

December 12, 2020

PharoWeekly

Call for Beta-testers Pharo ARM64 JIT

Dear happy Pharoers, 
Over the last months we have been working on the implementation of a MIT-licensed ARMv8 Just-In-Time compiler for Pharo VM.We are very happy with the advance on this subject, as we have not only implemented a new backend but we have added more than 2500 tests to the JIT, the primitives, code generation, plugins and the VM in general. In the process we fixed many problems. It shows that following the roadmap that was decided during General assembly of PharoDays, we have been investing in the Pharo VM and that our efforts are greatly paying off. Also, we are generating a lot of documentation and improving the process to really democratize the development of the VM. So Pharo is a better shape than ever on such matter and this opens a lot of possibility for the future. 


## Call for Beta-Testers


We would like to announce that a first version of our JIT backend is available for beta-testing for ARM Linux machines using Ubuntu. We are now entering into a beta testing stage of the VM and the image in Ubuntu ARM 64.We would like to invite you to our beta testing phase for the VM. If you’re interested in participating, please contact pablo.tesone@inria.fr.
The following sections give more details of the current status, and the following steps including Apple Silicon, Windows ARM64 and Linux Open Build System support.


## Current Status

Our objective is to have a running JIT for the new aarch64 architecture (ARM 64bits). This task includes not only a new backend for the JIT compiler but also adding support for external libraries, dependencies and the build process. This means having a working VM with comparable features as the one existing in Intel X64. We are targeting all the major operating systems running in this platform (Linux, OSX, Windows).Each of them present different restrictions and conditions.
This is the current status:

## Following Steps and Open Betas: Linux Open Build System (OBS), Windows ARM64 and Apple Silicon

Linux Systems: In the following days, we will also support Raspbian (Debian) and Manjaro on ARM64. For doing so, we are pushing the last details in having a single Linux build system through OBS. So, if you want to start doing beta-testing of these versions please contact us. A public beta will be open in around two weeks.

Windows Systems: We have extended the build process to fully support Microsoft Visual Studio compilers and more flexibility to select the targets, also we are building it to run in Windows ARM. To correctly run the VM in Windows it is needed to build all dependencies for aarch64. In the following weeks, we expect to have a working Non-JIT version and a JIT version. The remaining points to have a JIT version are related with the build process as the API of the operating system has not changed from X64 to aarch64.

OSX Systems: Our third target is to have a working version for the newest Apple silicon. We are acquiring the corresponding hardware to test and to address the differences in the API exposed to JIT applications. As it is the case of the Windows VM, there is not need to change the machine code generation backend; but to compile external libraries, and particularities of the new OS version.

Thanks for your support, and again, if you like to start beta testing the VM please contact us. In the meantime, we will continue giving you news about the current state and where are we going. 
The consortium would like to particularly thank Schmidt Buro and Lifeware for their contracts. 
Regards,
Pablo in behalf of the Pharo Consortium Engineers

by Stéphane Ducasse at December 12, 2020 04:31 PM

December 10, 2020

PharoWeekly

[Fr] Pharo quoi de neuf ?

We want to thanks tissac and colleagues for this nice article on Pharo for Linux.fr

https://linuxfr.org/news/pharo-quoi-de-neuf

S

by Stéphane Ducasse at December 10, 2020 01:05 PM

[Ann] Dophin to Pharo

Rko281 (alias John Aspinall) announced a nice package to migrate code from Dolphin to Pharo

https://github.com/rko281/DolphinToPharo

rko281 is also the author of the nice restore Database system.

https://github.com/rko281/ReStoreForPharo

We love these packages that support business. Go go go!

S.

by Stéphane Ducasse at December 10, 2020 01:04 PM

December 03, 2020

Ecole des Mines

We moved!

Our team evolved with more people and more research topics. The team is now called ARTS, which stands for Autonomous and ResilienT Systems. We also have a new web site. It will host all our news and projects from now on.

by noury at December 03, 2020 12:33 PM

November 08, 2020

Yuriy Tymchuk

Vigorous Caching in Pharo or: "How I used Meta Links to Program my Program's Execution"

moved to: https://uko.codes/vigorous-caching-in-pharo-or-how-i-used-meta-links-to-program-my-programs-execution

by Yuriy Tymchuk (noreply@blogger.com) at November 08, 2020 03:32 PM

November 02, 2020

Hernan Morales

Preview of Microdown, simplified syntax for documentation in Pharo 9

Exciting times are coming in the next Pharo 9 release. Have you heard about Pillar? It is a markup syntax with tools to write and generate documentation, books and slides. The new Pharo 9 release will allow to format documentation with a simplified version of Pillar, called Microdown

This is how Microdown looks like with System Browser class comments:

The documentation can be written directly in the System Browser, and one can get an immediate preview by switching the view while writing documentation for a class. The syntax is extremely simple (much simpler than Markdown), and the project is currently being pushed, so it's a nice opportunity to collaborate and provide feedback.


by Unknown (noreply@blogger.com) at November 02, 2020 07:52 AM

October 21, 2020

Yuriy Tymchuk

Using Pharo to Hack Everyday Tasks

moved to: https://uko.codes/using-pharo-to-plan-a-semester-schedule

by Yuriy Tymchuk (noreply@blogger.com) at October 21, 2020 03:06 PM