I updated Pharo with Style.
by Stéphane Ducasse at February 16, 2019 10:48 AM
I updated Pharo with Style.
by Stéphane Ducasse at February 16, 2019 10:48 AM
new article on GT Releaser tool.
by Torsten (email@example.com) at February 15, 2019 01:45 PM
Interview of Tudor Girba in a podcast on "Future of Coding"
by Torsten (firstname.lastname@example.org) at February 14, 2019 11:13 AM
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. This is actually possible, 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:
$ mono Contralto.exeContrAlto v18.104.22.168 (c) 2015-2017 Living Computers: Museum+Labs.Bug reports to email@example.comYou are at the ContrAlto console. Type 'show commands' to seea list of possible commands, and hit Tab to see possible command completions.>load disk 0 xmsmall.dskDrive 0 loaded.>startAlto started.>
ctrl A ≤ (less or equal)To learn Smalltalk-76, the User Manual is a good starting point:
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)
by Bert (firstname.lastname@example.org) at February 13, 2019 08:30 PM
New version v2.1.0 is available now. Check it here.
by Torsten (email@example.com) at February 13, 2019 02:42 PM
is out now - and it is based on latest Pharo 7.
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:40 PM
by Torsten (email@example.com) at February 13, 2019 02:38 PM
Just check this page if you want to participate.
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:28 PM
is available here.
by Torsten (email@example.com) at February 13, 2019 02:27 PM
Marvin - a Prototype system based on Self for Pharo from Pavel.
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:24 PM
by Torsten (email@example.com) at February 13, 2019 02:19 PM
A language extension for Pharo to have slots that announce changes. This is useful expecially in UI projects.
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:15 PM
This screencast shows an idea of how computational notebooks should work in the future. For pointers to the technologies being used, see the accompanying blog post
by Torsten (email@example.com) at February 13, 2019 02:13 PM
Hi, There is a new release of P3, the modern, lean and mean PostgreSQL client for Pharo. https://github.com/svenvc/P3 Version 1.2 contains the following changes: - P3PreparedStatement is now joined by a polymorphic P3FormattedStatement working client side on text strings - P3PreparedStatement & P3FormattedStatement now share the same double dispatch mechanism to process argument binding - Added convenience methods #listDatabases #listSchemas & #listTablesInSchema: to P3Client - Added convenience methods #firstColumnData & #firstFieldOfFirstRecord to P3Result - Added dynamic ENUM support via #loadEnums in P3Client - Add support for the 7 geometric types POINT, CIRCLE, LINE, LSEG, POLYGON & PATH with corresponding objects P3Point, P3Circle, P3Line, P3LineSegment, P3Polygon & P3Path - Add support for the INTERVAL type with P3Interval object - Added P3Client>>#serverVersion accessor - Add support for BIT & VARBIT types with P3FixedBitString & P3BitString objects - Add TIMETZ support - Organised P3 package with tags - More & better documentation & unit tests https://github.com/svenvc/P3/releases/tag/v1.2 The quality of open source software is determined by it being alive, supported and maintained. The first way to help is to simply use P3 in your projects and report back about your successes and the issues that you encounter. You can ask questions on the Pharo mailing lists. Enjoy, Sven
by Stéphane Ducasse at February 13, 2019 12:15 PM
You can get an impact on Pharo
The Pharo team
by Stéphane Ducasse at February 13, 2019 12:10 PM
Dear all, I am pleased to announce that registration for Pharo Days 2019 is now open! Pharo days is a gathering of the Pharo community to exchange, discuss and code with your online colleagues. Join us to share your experiences and help to make a better Pharo! To register, please proceed to the Pharo Days 2019 web page: https://pharo.org/2019PharoDays <https://pharo.org/2019PharoDays>, or go directly to the association event: https://association.pharo.org/event-3255426 <https://association.pharo.org/event-3255426>. (Yes, the schedule is still to be defined, stay tuned). If there are any questions or problems, I am happy to answer them. Esteban Ps: I’m sorry for multiple posts ;)
by Stéphane Ducasse at February 11, 2019 06:06 PM
Hi list, We started Pharo 8.0 development and we wanted to share (and discuss, if needed) what is our current Roadmap for Pharo 8.0. As you can see, Windows is getting some love, and also UI. Anyway, here it is: Image === 1) Missing parts for headless VM to work (explained a bit later) 2) We need to improve Epicea speed. And in general, source access speed. We want to remove the old changes file (since Epicea already does that works and a lot more). 3) Improve Refactors 4) Improve Calypso 5) Introduce Spec2 (our re-work on this framework). - We also want to migrate our tools to it (Inspector, Debugger, Spotter and Calypso are the remaining parts). We will see how much of this migration can be done. VM/Low-level side === 1) headless vm We want to have a real headless VM and make it our default VM. To it, most of the work vm-side is already made by Ronie, but there are missing parts: - a build on windows - image side capabilities: we use SDL2 to start the world, and it mostly works... but not completely. One cool thing of this is that we will -finally- be able to clean the event handling, which is ugly (and works bad). 2) Windows several missing/non working parts: - file primitives are slow. This is because they rely in old APIs and we need to put them in "state of the art". - libgit2 does not processes long paths. We workarounded the problem with tonel, but at a point we need to take care about this. Real problem with this is we need to contribute the solution to libgit2, but this is also good Open Source policy (contributing back). - OSSubprocess in windows. We believe we need to extend OSSubprocess (our solution to communicate with system) to windows. And we believe is possible ;) 3) ThreadedFFI. It is already too much time since we have this in agenda. Is time to make it real. 4) memory policies. Tweaking the VM to enhance its memory usage is possible, but hard. We want to adopt an scheme of "memory policies" that will allow users to pick what they need. Process === 1) We will add multiple source directories to Iceberg. This is needed to allow us to put all Pharo sub-projects into an unique project without breaking modularisations. Others === 1) Launcher - Launcher us getting a new UI - Tests - It needs to be more solid (in part, that's the reason why we want OSSubprocess in windows). 2) Cargo - We need to revisit cargo (a new dependency manager) and at a point decide if it will fly or not :) Nice to have (most probably not this version, but in our TODO) : - embedded VM - event driven VM - what happens if we split VM into main thread and vm thread?
by Stéphane Ducasse at February 08, 2019 07:07 AM
I had the occasion to reinstall Windows 7 on my laptop and took the chance to set it up with the latest development tools. The objective was to build OpenSmalltalk for Pharo and Dolphin Smalltalk on the machine.
This is primarily for building Dolphin Smalltalk. The command line tools come in handy when building SQLite.
I chose to install most VS2017 options and it weighed in at a whopping 50GB of disk space.
I installed the 64-bit edition. The following packages are required to build 32-bit OpenSmalltalk.
Jumping ahead a bit, as part of the build process, the OpenSmalltalk build
system attempts to copy
/usr/i686-w64-mingw32/sys-root/mingw/bin/iconv.dll. On my Cygwin
installation, there is no such file, but there does exist
/usr/bin/cygiconv-2.dll. To make things simple, I copied
/usr/bin/cygiconv-2.dll over to where OpenSmalltalk expects to find it.
Looking around the web, I believe
cygiconv-2.dll is the correct file.
Start a Cygwin terminal. Clone the OpenSmalltalk VM repo and build the VM.
$ mkdir -p /cygdrive/c/Users/Pierce/source/repos/opensmalltalk $ cd /cygdrive/c/Users/Pierce/source/repos/opensmalltalk $ git clone https://github.com/opensmalltalk/opensmalltalk-vm.git ... Checking out files: 100% (10541/10541), done. $ cd opensmalltalk-vm/build.win32x86/pharo.cog.spur $ ../../scripts/updateSCCSVersions $ ./mvm -f <humongous amount of output, much fan noise and heat dissipation from laptop> $ ls build/vm btext.o Pharo.def sqNamedPrims.o sqWin32PluginSupport.o cogit.o Pharo.exe sqPath.o sqWin32Prefs.o etext.o Pharo.exe.manifest sqTextEncoding.o sqWin32Service.o FileAttributesPlugin.dll Pharo.exp sqTicker.o sqWin32SpurAlloc.o FT2Plugin.dll Pharo.lib SqueakSSL.dll sqWin32Stubs.o gcc3x-cointerp.o Pharo.map sqVirtualMachine.o sqWin32Threads.o iconv.dll Pharo.res sqWin32Alloc.o sqWin32Time.o libcairo-2.dll PharoConsole.exe sqWin32Backtrace.o sqWin32Utils.o libeay32.dll PharoConsole.exe.manifest sqWin32DirectInput.o sqWin32VMProfile.o libfreetype.dll PharoConsole.map sqWin32Directory.o sqWin32Window.o libgcc_s_sjlj-1.dll PharoConsoleUnstripped.exe sqWin32DnsInfo.o ssleay32.dll libgit2.dll PharoUnstripped.exe sqWin32Exports.o SurfacePlugin.dll libpixman-1-0.dll resource.o sqWin32ExternalPrims.o version.o libpng16-16.dll SDL2.dll sqWin32GUID.o zlib1.dll libssh2-1.dll sqExternalSemaphores.o sqWin32Heartbeat.o libwinpthread-1.dll sqHeapMap.o sqWin32Main.o
Now open a cmd.exe window and copy the VM files out.
C:\> mkdir c:\pkg\pharo6vm32 C:\> copy c:\Users\Pierce\source\repos\opensmalltalk\opensmalltalk-vm\build.win32x86\pharo.cog.spur\build\vm\*.dll c:\pkg\pharo6vm32 C:\> copy c:\Users\Pierce\source\repos\opensmalltalk\opensmalltalk-vm\build.win32x86\pharo.cog.spur\build\vm\*.exe c:\pkg\pharo6vm32 C:\>dir /d c:\pkg\pharo6vm32 Volume in drive C has no label. Volume Serial Number is FCE0-E161 Directory of c:\pkg\pharo6vm32 [.] libssh2-1.dll [..] libwinpthread-1.dll FileAttributesPlugin.dll Pharo.exe FT2Plugin.dll PharoConsole.exe iconv.dll PharoConsoleUnstripped.exe libcairo-2.dll PharoUnstripped.exe libeay32.dll SDL2.dll libfreetype.dll SqueakSSL.dll libgcc_s_sjlj-1.dll ssleay32.dll libgit2.dll SurfacePlugin.dll libpixman-1-0.dll zlib1.dll libpng16-16.dll 21 File(s) 47,771,093 bytes 2 Dir(s) 29,938,479,104 bytes free
cl sqlite3.c -link -dll -out:sqlite3.dll
While this produces a DLL, said DLL doesn't actually export any symbol and is thus useless for FFI. This blog post by Mario Guggenberger provides the magic incantation:
cl sqlite3.c -DSQLITE_API=__declspec(dllexport) -link -dll -out:sqlite3.dll
To get to the 32-bit MSVC command line tools, click through the following: Windows Menu, All Programs, Visual Studio 2017, Visual Studio Tools, VC, x86 Native Tools Command Prompt. This launches a cmd.exe shell with the appropriate tools set up.
sqlite3.dll and copy it to
Download the Pharo 7 32-bit image zip. Unpack and make a copy - I named the
wintesting. Double click on
wintesting.image to start.
In Pharo, open Catalog Browser. Select and install GlorpSQLite. It fails. Run below Metacello snippet, which is what is executed when loading GlorpSQLite from Catalog Browser.
Metacello new baseline: 'GlorpSQLite'; repository: 'github://PierceNg/glorp-sqlite3:pharo7'; load
Fails with message "The handle is in the wrong state for the requested operation".
There is a related Iceberg issue on GH. The suggestion is to use a newer version of libgit2.
The current version of libgit2 used is 0.25.1, according to
libgit2_spec_download_url:=https://github.com/libgit2/libgit2/archive/v0.25.1.tar.gz libgit2_spec_archive_name:=libgit2-v0.25.1.tar.gz libgit2_spec_unpack_dir_name:=libgit2-0.25.1 libgit2_spec_product_name_macOS:=libgit22.214.171.124.dylib libgit2_spec_product_name_linux:=libgit2.so.0.25.1 libgit2_spec_product_name_windows:=libgit2.dll libgit2_spec_symlinks_macOS:=libgit2*.dylib libgit2_spec_symlinks_linux:=libgit2.so* #libgit2_spec_download_url:=https://github.com/libgit2/libgit2/archive/v0.23.0.tar.gz #libgit2_spec_archive_name:=libgit2-v0.23.0.tar.gz #libgit2_spec_unpack_dir_name:=libgit2-0.23.0 #libgit2_spec_product_name_macOS:=libgit126.96.36.199.dylib #libgit2_spec_product_name_linux:=libgit2.so.0.23.0 #libgit2_spec_product_name_windows:=libgit2.dll #libgit2_spec_symlinks_macOS:=libgit2*.dylib #libgit2_spec_symlinks_linux:=libgit2.so*
According to libgit2 GH repo, the newest versions are 0.27.8 and 0.26.8.
I first tried 0.27.8 but building failed. I then tried 0.26.8 and this time
it built successfully. This is what
libgit2.spec looks like now:
libgit2_spec_download_url:=https://github.com/libgit2/libgit2/archive/v0.26.8.tar.gz libgit2_spec_archive_name:=libgit2-v0.26.8.tar.gz libgit2_spec_unpack_dir_name:=libgit2-0.26.8 libgit2_spec_product_name_macOS:=libgit188.8.131.52.dylib libgit2_spec_product_name_linux:=libgit2.so.0.26.8 libgit2_spec_product_name_windows:=libgit2.dll libgit2_spec_symlinks_macOS:=libgit2*.dylib libgit2_spec_symlinks_linux:=libgit2.so*
To build the newer version of libgit2 and the rest of the VM, re-run
./mvm -f in
build.win32x86\pharo.cog.spur. When done, copy the
.exe and .dll files into
Start Pharo again and repeat steps described above in section Test with Pharo 7. This time Catalog Browser loads GlorpSQLite successfully.
Open Test Runner and run Glorp tests. All tests pass.
by Pierce Ng at February 03, 2019 06:20 PM
Hi all, Pharo Launcher 1.6 has just been released! It is available from http://pharo.org/download. This new version introduces two major changes: the list of template sources is now externalized as a Ston file. Pharo Launcher will check regularly (at startup and each day) if there are changes between your local source of templates and the one hosted in Pharo file server. If so, Pharo Launcher will propose you to update your template sources. It is a way to automatically get new official sources or to keep stable, dev versions up to date. a small UI is now available to manage VMs of PharoLauncher (update, remove, list). Also, this is the first release done with all sources coming from GitHub (https://github.com/pharo-project/pharo-launcher). Big thanks to all contributors, including issue reports. Here is the changelog: Pharo Launcher v1.6 <https://github.com/pharo-project/pharo-launcher/releases/tag/1.6> New features: #283 <https://github.com/pharo-project/pharo-launcher/issues/283> Template sources should be editable without modifying PL code #172 <https://github.com/pharo-project/pharo-launcher/issues/172> Provide a way to update / remove VMs #131 <https://github.com/pharo-project/pharo-launcher/issues/131> Display date for "Last Modified" on the form of "X day/month/year ago" Improvements: #295 <https://github.com/pharo-project/pharo-launcher/issues/295> Pharo 7 marked as (development version) #290 <https://github.com/pharo-project/pharo-launcher/issues/290> Add "latest" to indicate dynamic version development versions for Pharo 7.0 #299 <https://github.com/pharo-project/pharo-launcher/issues/299> About hot (more recently used) coloring schema #287 <https://github.com/pharo-project/pharo-launcher/issues/287> Launch button is enabled despite no Current image being selected (or present) #274 <https://github.com/pharo-project/pharo-launcher/issues/274> Copy and Rename command should not add a "-01" Bug fixes: #293 <https://github.com/pharo-project/pharo-launcher/issues/293> zipfile from 85bebb7 <https://github.com/pharo-project/pharo-launcher/commit/85bebb7dc75e7e78fac0f2cb02fde3ec384edbf0> has no source file #291 <https://github.com/pharo-project/pharo-launcher/issues/291> FileDoesNotExist error at Launcher startup #286 <https://github.com/pharo-project/pharo-launcher/issues/286> Buttons (Import > Launch an image...) are cut off in Windows 10 #281 <https://github.com/pharo-project/pharo-launcher/issues/281> Pharo Launcher does not go beyond Pharo 7 #1384 image Regards, The Pharo team.
by Stéphane Ducasse at February 03, 2019 09:34 AM
With some other members of the community we are proud to announce a new effort on Pharo documentation: https://github.com/pharo-open-documentation/awesome-pharo
We launched an organization pharo-open-documentation which is a
user-maintained documentation related to Pharo environment, language,
Currently it has three main projects:
– pharo-wiki : Wiki related to the Pharo programming language and environment.
– awesome-pharo : A collection of awesome Pharo libraries, tools,
frameworks and software.
– awesome-pharo-ml : List of projects, books, booklets, papers, and
applications related to machine learning, AI, data science in Pharo.
Contributions are welcomed!
If you own a cool project in Pharo others could use in their own
projects, send us a PR to awesome-pharo!
If you have knowledge on Pharo or projects of Pharo, we would be glad
if you could contribute to the pharo-wiki! Don’t forget to read the
We opened a Twitter to announce new entries on the pharo-wiki.
Have a nice day!
by Stéphane Ducasse at January 30, 2019 07:22 PM
I gave myself a 1Q2019 target to write proper READMEs for my Github repos. First up is PasswordCrypt. I reproduce the README here.
PasswordCrypt is a library for Pharo Smalltalk to handle passwords salted and hashed by SHA-256/SHA-512. Its primary components are PCPasswordCrypt, PCAuthenticator and PCBasicAuthenticator.
At its core, PCPasswordCrypt provides the following class-side messages:
PCPasswordCrypt sha256crypt: 'secret' withSalt: 'andPepperToo' "'$5$andPepperToo$5p0MWgRMT6l6EA6dYDlFhuQKi.tfCXNd35T99HxbsTD'"
The result is a string in modular crypt format (MFC).
$5 on the left of the
string indicates that the hashing algorithm is SHA-256. For SHA-512, the
On the instance side, PCPasswordCrypt generates the salt randomly if one is not supplied:
PCPasswordCrypt new sha256crypt: 'secret' "'$5$5bUAI5i2$iIdIXcQGhZfNF0HQFG592Ut1I6UtuO/smBPJkKBrRzC'"
PCAuthenticator builds on PCPasswordCrypt to provide username/password management. PCAuthenticator operates as a singleton object to persist its data in the Pharo image across restarts.
| appName auth newUser userToValidate | appName := 'myApp'. "Initialize the authenticator for my application." auth := PCAuthenticator uniqueInstance. auth initializeDatabaseFor: appName. "Add a user." newUser := PCUserCredential appname: appName; username: 'testuser'; password: 'secret'; yourself. auth insertUserCredential: newUser. "Create another user object and validate its password." userToValidate := PCUserCredential appname: appName; username: 'testuser'; password: 'secret'; yourself. auth validateUserCredential: userToValidate "If the passwords match, userToValidate is returned; otherwise, nil is returned."
PCAuthenticatorUI is a simple Spec-based user interface to upsert new usernames/passwords into PCAuthenticator. I wrote it because I simply abhor code snippets containing clear-text passwords, except for demonstration as above. To run PCAuthenticatorUI:
PCAuthenticatorUI new openWithSpec
PCBasicAuthenticator subclasses ZnBasicAuthenticator, the HTTP basic authentication handler in ZincHTTPComponents. It uses PCAuthenticator so that
To install the Pharo code:
Metacello new baseline: 'PasswordCrypt'; repository: 'github://PierceNg/PasswordCrypt/src-st'; load.
PCPasswordCrypt is an FFI to the C library
libshacrypt, built from the
shacrypt512.c in the directory
src-c. To build the C library:
% cd src-c % make
The generated shared library is
libshacrypt.so on Linux and
libshacrypt.dylib on OSX/macOS. It must be placed where the Pharo VM can
find it at run time. My practice is to place the shared library file together
with the Pharo VM's plugins. On macOS, suppose Pharo is installed in
libshacrypt.dylib goes into
sha512crypt.care public domain
by Pierce Ng at January 26, 2019 09:38 AM
SmalltalkCI was integrated with Travis. To set up continuous integration for your Smalltalk project, you need a .travis.yml and a .ston configuration file for SmalltalkCI. It is easy to setup and works great in many Squeak and Pharo projects already. Read the docu for more.
by Torsten (firstname.lastname@example.org) at January 23, 2019 07:46 AM
Dear World and dynamic language lovers: The time has come for Pharo 7.0! Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback. This is our most significant release yet. Here are the key highlights of this release: • Pharo is now provided in 64-bit version in Linux and OSX and brings even better performance and stability. The 64-bit version is now recommended for Linux and Mac, and is provided as technical preview for Windows. • Pharo comes with a new version of the PharoLauncher (https://pharo.org/download): THE tool to manage your distributions (access to regular versions, jenkins builds, and older versions). • Pharo build has a fully new build process that supports its full bootstrap from sources. This will enable the production to specific (micro) images. • Iceberg, the git client for Pharo has been significantly improved, and is the default CMS. • Calypso, the angular stone of PharoThings, is the new system Pharo browser. It replaces Nautilus and brings better remote working and more advanced browsing capabilities. • IoT is now an important part of Pharo. Installing PharoThings (https://github.com/pharo-iot/PharoThings) provides an impressive amount of tools to develop applications in small devices. • The unified foreign function interface (UnifiedFFI) for interfacing with the outside world is significantly improved to work properly on Windows 64-bit. Pharo 70’s new infrastructure and process set the stage for a new generation of version. The visibility of GitHub combined with the powerful tools that have been validated with more than one year of beta testing is massively pay off. These are just the more prominent highlights, but the details are just as important. We have closed a massive amount of issues: 2142 issues! (A comprehensive changelog can be found at: https://github.com/pharo-project/pharo-changelogs/blob/master/Pharo70ChangeLogs.md). While the technical improvements are significant, still the most impressive fact is that the new code that got in the main Pharo 7.0 image was contributed by more than 75 people. Pharo is more than code. It is an exciting project involving energetic people. We thank all the contributors of this release: Gabriel Omar Cotelli, Gustavo Santos, Marcus Denker, Torsten Bergmann, Esteban Lorenzano, Bernardo Ezequiel Contreras, Guille Polito, Pablo Tesone, Yoan Geran, Stéphane Ducasse, Cyril Ferlicot, Vincent Blondeau, Denis Kudriashov, Julien Delplanque, Tim Mackinnon, Max Leske, Andrew P. Black, Tomohiro Oda, Clément Béra, Ben Coman, Eric Gade, Yuriy Tymchuk, Nicolas Cellier, Biyalou-Sama Asbath, Myroslava, Sean DeNigris, Juraj Kubelka, Noury Bouraqadi, Holger Freyther, Geoff Reedy, Norbert Hartl, Paul DeBruicker, Alain Plantec, Martín Dias, Peter Uhnak, Tomohiro Oda, Benoît Verhaeghe, Santiago Bragagnolo, Wouter van Zuilen, Bernhard Pieber, Damien Pollet, Geoff Hill, Hans-Martin Mosner, Ronie Salgado, Philippe Back, Aliaksei Syrel, Dayne Guerra, Rafael Luque, Serge Stinckwich, Vincent Aranega, Hernán Morales Durand, Petr Fischer, Rajula Vineet Reddy, Alexandre Bergel, Esteban A. Maringolo, Jan Blizničenko, Johan Brichau, Luc Fabresse, Quentin Ducasse, Sébastien Roccaserra, Stephan Eggermont, Sven Van Caekenberghe, Takano Mitsuhiro, Pavel Krivanek, Allex Oliveira, Christophe Demarey, Lionel Akue, Nicolai Hess, Martin McClure, Alistair Grant, Pierre Tsapliayev, Milton Mamani, Matteo Marra, Thomas Dupriez, Asbathou Biyalou-Sama. (If you contributed with Pharo 7.0 development in any way and we missed your name, please send us a mail and we will add you). Enjoy! The Pharo Team Try Pharo: http://pharo.org/download Learn Pharo: http://pharo.org/documentation
by Stéphane Ducasse at January 22, 2019 09:30 PM
Smalltalk systems influenced computing like no other technology in the world. You will find many of its ideas in all modern software systems ranging from graphical user interfaces up to mobile devices.
With Pharo-Project we continue with this tradition to provide an inspiring lively object-oriented system but also move Smalltalks ideas to the next level.
Today is the day we release Pharo 7.0 into the wild and again as a free open source gift to the world.
This is yet another major step towards a brighter future for dynamic development approaches. Pharo 7.0 was realized by a worldwide community of 75 people - taking us over one year of distributed development.
Pharo advanced on many sides. Now we can fully bootstrap into a custom image - including Slots, Metalinks and other meta facilities. New books and tutorials were written about it, it is used in web development, IoT and other. It's already a business driver for several companies worldwide with a growing number of users.
2142 issues solved in general - 762 commits done from my side (astares) alone. Mostly trivial stuff but each still important to cleanup and form a well structured core. Dont know if I could be proud to have climbed to the top in github contribution statistics in this release - personally I will remember the PR's primary as 762 times fighting with the CI infrastructure ;)
Pharo 8 work already started now ... so come in - the water is just fine. Step by step it goes...
by Torsten (email@example.com) at January 22, 2019 08:18 PM
GemTalkSystems is pleased to announce SETT (Store Export to Tonel Tools). SETT is open source project with an MIT license. SETT (Store Export to Tonel Tools) is a set of tools to export Smalltalk code from Store and write into the Tonel file format managed using Git. SETT is: * a Pharo 6.1 application, that * connects to a Postgres Database * containing source code history in VisualWorks Store format; and * writes to a Git repository * in Tonel format * maintaining all version history, source code and SCM metadata. SETT was developed last year to support one of our commercial customers in their conversion From Store to Rowan. Rowan artifacts are produced as part of the output of SETT, but the Rowan artifacts can be ignored. The important bit is that SETT converts from Store to Tonel and maintains version history in git. Please see the project ReadMe and Wiki for additional details. Dale  https://github.com/GemTalk/SETT  https://github.com/GemTalk/Rowan  https://github.com/GemTalk/SETT#overview  https://github.com/GemTalk/SETT/wiki
by Stéphane Ducasse at January 20, 2019 03:53 PM
Dear members of the Pharo community,
We are happy to announce that we will be organising Pharo Days this year, in Lille, France. This will be a two day event: Thursday April 4 & Friday April 5. The main venue will be the Amphitheatre of INRIA Lille – Nord Europe.
Each day will consist of a number of short 20 to 30 minutes tech talks in the morning, with a more free format in the afternoon: general hacking space, pair programming, demos, side meetings, tutorials, coding sprints, Q&A’s, shows us your projects – real life human interaction. Of course, there will be social events as well.
Please join us to make this another successful edition, after Annecy (FR) 2011, Lille 2012, Bern (CH) & Lille 2013, Lille 2015, Namur (BE) 2016 and Lille 2017.
Mark your calendars, we will provide more details when they become available.
The Pharo Board, Association & Consortium
by Stéphane Ducasse at January 18, 2019 03:29 PM
OSSubprocess works on macOS Mojave with 64-bit Pharo.
Load it the usual way:
Metacello new baseline: 'OSSubprocess'; repository: 'github://pharo-contributions/OSSubprocess:master/repository'; load.
Run the tests. If Pharo was started like how applications are usually started on the Mac, by double-clicking the Pharo.app icon, Test Runner will report 40+ test errors.
Run Pharo the Unix way on the command line:
~/MyApps/Pharo.app/Contents/MacOS/Pharo mypharo7.image. Now all 114 tests
pass. All 7 stress tests pass too. Tested with Pharo 7.0 pre-release image.
by Pierce Ng at January 15, 2019 10:06 PM
| rewriter node method testsels |testsels := ReTest selectors select: [ :e | e beginsWith: ‘test’ ].testselsdo: [ :s | rewriter := RBParseTreeRewriter new.rewriterreplace: ‘self shouldnt: [re compile] raise: Error’with: ‘self compileIsOK’.method := ReTest compiledMethodAt: s.node := method parseTree.(rewriter executeTree: node)ifTrue: [method origincompile: node formattedCodeclassified: method protocol ]]
by Stéphane Ducasse at January 15, 2019 08:19 PM
Hi, I announce the availability of Smallapack in Pharo6. The ConfigurationOfSmallapack is in http://www.squeaksource.com/MetacelloRepository and there is a copy in metarepo for Pharo 3/4/5/6. Currently, the ported version uses a derivative of OpalCompiler patched to handle method with 16+ arguments. External function calls have not been converted yet to UnifiedFFI, but the patched compiler rather has hook to compile legacy FFI. Though I did not install the hook to call FFI with more than 15 arguments, so there is at least 1 unit test failing (but not crashing). I have auto-re-generated all the source code for using UnifiedFFI formats, so the dependency on legacy FFI is not a necessity (apart for simplifying cross dialect maintenance). But I want to review the generated code method by method rather than filing it in blindly (the wrapper functions are also generated, and I might loose comments or improvments if I'm careless). Unfortunately, the state of diff tools in Pharo6, be it thru MC or worse than all, thru legacy change lists, does not enable such a large scale review, so I think that I will edit in Squeak and run in Pharo... Now that Smallapack supports Opal, there should be no major problem for porting to Pharo7, but I did not have time to try yet. A few more MC regressions, and the fact to forbid protocol beginning with a * was too serious a cross compatibility hurdle for me. But I'll come back to it, tools are generally better in ph7 than ph6. Stay tuned. Nicolas Cellier
by Stéphane Ducasse at January 13, 2019 08:15 PM
Hi guys, We have been using this week with Pablo a combination of Visual Studio Code, cygwin, and gdb to build and debug the VM to chase some issues during ffi calls in win64. It was overall simple to setup, and though I thought it was going to be just a text editor with vitamines, it ended up being a really light but versatile IDE with code navigation, compilation and debugging integration. But, since there were some little things over here and there like gdb source code mapping that was not so straight forward to find in the documentation, we thought it would be good to share it. If somebody is interested in using a similar setup to work with the VM, I've left my configuration files in the following gist, including: - cygwin bash terminal integration (also with zsh, but that's pure cygwin) - task actions to build cog and stack vms on debug mode - launch configs to run both in debug mode with gdb attached https://gist.github.com/guillep/452a9be3d231db6f89dd40bfb8cf4405 Cheers, Guille & Pablo
by Stéphane Ducasse at January 13, 2019 08:09 PM