by Stéphane Ducasse at March 22, 2019 03:28 PM
by Stéphane Ducasse at March 22, 2019 03:28 PM
Dear friends !
I am quite excited to announce the availability of an alpha version
of my latest work around Parsing and Programming Languages at:
Accompanied by ~ 30 min of transcribed eye-candy:
Backed by a crowdfunding campaign ! To get the book and stable release
successfully out of the door:
Click, download, watch, enjoy ! If you like what you see, support the project ! Tiers
start from 5 and 10 euros per chapter for individuals. Companies supporting
the project can get 6 to 12 days of consultancy, on-site workshops and other perks.
What is all about ??
Lan.d.s is a new solution for language design. From general purpose
languages like Lise (short for (list (embedding)) to Domain-Specific
Languages using the MOODs framework, and everything else in between.
Lan.d.s is build around the formalism of Multi-Ordered Grammars,
which are a possible alternative to CFGs and PEGs in wider use today.
Multi-ordered grammars (or simply MOGs) aim for a better exploration of ambiguity,
recursion, ordering and associativity during language design. They can be parsed using the
Gray Algorithm. After parsing in order to ease the production of executable code
Lan.d.s introduces the Abstract Syntax Language (ASL), which is an OO
solution for compile-time meta-programming. Finally in order to promote
language extension and re-use, Lan.d.s employs GrammarTraits, as units of
composition for both MOG rules and ASL actions.
Some random highlights for the impatient:
* Object subclass: #Prediction uses: Future syntax
* Languages are everywhere, they are all around you, even now in this very sentence.
* Study SICP with a Xerox flavor, while re-inventing some Bell-labs utilities.
* TOC-Board, the TOC for your next talk
by Stéphane Ducasse at March 17, 2019 01:20 PM
by Stéphane Ducasse at March 16, 2019 04:55 PM
I’m working on having a telepharo image based on the pharo minimal image. With the help of pavel and Allex I prepared a usable artefact on github that can be used. Both images are based on Pharo8.
by Stéphane Ducasse at March 13, 2019 07:50 PM
Hello Happy Pharoers
We just issued a release for pharo 7.0
by Stéphane Ducasse at March 05, 2019 06:14 PM
I've enhanced the Pharo SQLite library to be even more multilingual. It has always supported data elements that are Pharo WideString instances, these being converted to/from UTF8 transparently by the library. Now the library also handles multilingual table names, column names and default column values; in other words, multilingual SQL statements.
To install in Pharo 7, load GlorpSQLite from the Catalog Browser.
| db | db := UDBCSQLite3Connection openOn: '/tmp/ml.db'. [ "Chinese table name, column names, and default column value." db basicExecute: 'create table 表一 (键一 integer primary key, 列二 text default ''中文'');'. "Insert a row, taking default column value for the 2nd column." db basicExecute: 'insert into 表一 (键一) values (NULL)'. "Insert another row, specifying a value in Chinese for the 2nd column." db execute: 'insert into 表一 values (NULL, ?)' with: (Array with: '值二'). (db execute: 'select * from 表一') rows inspect. ] ensure: [ db close ]
Inspector shows that it isn't quite I18N, although Transcript is:
From the SQLite shell:
% sqlite3 /tmp/ml.db SQLite version 3.27.2 2019-02-25 16:06:06 Enter ".help" for usage hints. sqlite> .header on sqlite> .schema CREATE TABLE 表一 (键一 integer primary key, 列二 text default '中文'); sqlite> select * from 表一; 键一|列二 1|中文 2|值二 sqlite>
Testing and feedback welcome, especially on which other parts of the library needing internationalization.
by Pierce Ng at March 02, 2019 09:04 PM
Is described here: https://fuhrmanator.github.io/Pharo-in-WSL/
by Torsten (firstname.lastname@example.org) at February 28, 2019 01:48 PM
Cool blog post!
by Stéphane Ducasse at February 28, 2019 07:29 AM
|“Programs must be written for people to read, and only incidentally for machines to execute.”
by Stéphane Ducasse at February 26, 2019 03:52 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.
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.
by Stéphane Ducasse at February 23, 2019 08:11 PM
The supported Pharo versions are 6.1 — 32 bits and 7.0 — 32 & 64 bits. The breaking changes are just in the package organization, so you may have to adapt your baseline dependencies but the rest of the code is backwards compatible with version 4.
You can see the detailed release notes here.
by Stéphane Ducasse at February 23, 2019 08:08 PM
Now that Pharo 7 is finally released, we took some time to update the whole web stack hosted at ba-st.
As a general update all the projects now follow the brand new community guidelines and support Pharo 6.1–32 bits and Pharo 7–32 & 64 bits. The build matrix now includes Pharo 8 as a preview.
by Stéphane Ducasse at February 23, 2019 08:06 PM
On Windows 7, setting up multilingual (for me, Chinese and Japanese) input for Pharo is straightforward: Outside of Pharo, configure Windows multilingual input. Start Pharo and choose a font such as Arial Unicode MS. Then, just switch Windows's input system using hot-key or mouse click, and type, or write, as the case may be.
by Pierce Ng at February 22, 2019 11:59 AM
After reinstalling Windows 7, I set my laptop up to dual boot Xubuntu 18.04. My laptop has an integrated Intel i915 graphics chip and also an Nvidia GeForce GT 330M GPU. This post describes how I set up X11 to use the GPU.
Start by finding out which drivers are in use and available:
% ubuntu-drivers devices ... currently running nouveau ... recommends nvidia-340
Install the recommended driver and reboot:
% sudo apt-get install nvidia-340 ... % sudo shutdown -r now
After the reboot, VT-7 showed a black screen. VTs 1-6 were still available and the machine was otherwise functional. X.org.0.log recorded that the Nvidia driver had set (the graphics) mode to NULL.
% sudo apt-get install nvidia-prime % sudo prime-select nvidia % sudo shutdown -r now
The X environment came back. To validate:
% inxi -G Graphics: Card-1: Intel Core Processor Integrated Graphics Controller Card-2: NVIDIA GT216M [GeForce GT 330M] Display Server: x11 (X.Org 1.19.6 ) drivers: modesetting,nvidia (unloaded: fbdev,vesa,nouveau) Resolution: email@example.com OpenGL: renderer: GeForce GT 330M/PCIe/SSE2 version: 3.3.0 NVIDIA 340.107
There's a tool to switch between the Nvdia and Intel chips:
% glxgears -info ... ... 13122 frames in 5.0 seconds = 2624.275 FPS 13039 frames in 5.0 seconds = 2607.778 FPS 13916 frames in 5.0 seconds = 2783.134 FPS 11971 frames in 5.0 seconds = 2394.196 FPS
For comparison and contrast, an even older GPU-less laptop managed about
~60 FPS running
As for Pharo, the OSWindow external operating system window examples, such
SDL2AthensDrawingExample, now only run in Nvidia mode and crash
Pharo instantly in Intel mode:
The program 'pharo' received an X Window System error. This probably reflects a bug in the program. The error was 'BadValue (integer parameter out of range for operation)'. (Details: serial 100 error_code 2 request_code 154 minor_code 3) (Note to programmers: normally, X errors are reported asynchronously; that is, you will receive the error a while after causing it. To debug your program, run it with the --sync command line option to change this behavior. You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.)
by Pierce Ng at February 19, 2019 09:52 PM
This is a thank you note about Iceberg.
I have been moving all my external and internal Pharo code to git/tonel/7 and on multiple occasions I have been pleasantly surprised about the functionality and performance of Iceberg. Basically, it just works.
Finally, Pharo code lives in standard open source and commercial repositories (git, GitHub, Bitbucket, …), without losing anything.
I know that it took years to get here and that lots of code and community battles had to be fought. So thank you, to the whole team, you did a great job !
by Stéphane Ducasse at February 19, 2019 08:56 AM
Hi all, I'm on vacations, so I've produced a new patch version of Iceberg :). This version restores compatibility with Pharo6, which was broken since latest changes done for Pharo7 64bit support. https://github.com/pharo-vcs/iceberg/releases/tag/v1.5.7 I hope people still using Pharo6 find this useful. You should be able now to use again the update script to use latest iceberg on it. I've updated the doc to point to the latest supported version: "load iceberg"Metacello new baseline: 'Iceberg'; repository: 'github://pharo-vcs/iceberg:v1.5.?'; onWarningLog; load. On this same direction, we have been discussing that v1.5.* will be the latest minor version supporting Pharo6. Still, we will keep integrating bugfixes and patches as they come. New versions (>= 1.6) will host the new features and will be available and maintained for both the stable Pharo7 and the in-development Pharo8 versions. Enjoy, Guille
by Stéphane Ducasse at February 18, 2019 01:32 PM
I updated Pharo with Style.
by Stéphane Ducasse at February 16, 2019 10:48 AM
new article on GT Releaser tool.
by Torsten (firstname.lastname@example.org) at February 15, 2019 01:45 PM
Interview of Tudor Girba in a podcast on "Future of Coding"
by Torsten (email@example.com) 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 v184.108.40.206 (c) 2015-2017 Living Computers: Museum+Labs.Bug reports to firstname.lastname@example.orgYou 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 (email@example.com) at February 13, 2019 08:30 PM
New version v2.1.0 is available now. Check it here.
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:42 PM
is out now - and it is based on latest Pharo 7.
by Torsten (email@example.com) at February 13, 2019 02:40 PM
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:38 PM
Just check this page if you want to participate.
by Torsten (email@example.com) at February 13, 2019 02:28 PM
is available here.
by Torsten (firstname.lastname@example.org) at February 13, 2019 02:27 PM
Marvin - a Prototype system based on Self for Pharo from Pavel.
by Torsten (email@example.com) at February 13, 2019 02:24 PM
by Torsten (firstname.lastname@example.org) 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 (email@example.com) 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 (firstname.lastname@example.org) 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