
Pharo 8.0 - estebanlor
http://pharo.org/news/pharo8.0-released
======
elliotlarson
As a long time Ruby developer I frequently hear older developers talking
fondly about their experiences working with Smalltalk long ago. When I saw
this post, I was curious enough to watch a video just now by a respected Ruby
dev (who's admittedly new to Smalltalk and using an older version of Pharo):
[https://www.youtube.com/watch?v=HOuZyOKa91o](https://www.youtube.com/watch?v=HOuZyOKa91o).
The video is short, but it looks to me like the advantage of developing in
this environment is mainly that you can write a test, run it in a kind of
debug mode, and when the environment encounters something it doesn't
understand it gives you some options for creating something new like an object
or a method to solve the problem. This seems kind of cool, but I feel like
there must be more to it. Can anyone better explain the selling point, or
share a video that highlights how this environment is so cool?

~~~
gambler
There is no single selling point. Here are some surface things that I
immediately liked:

1\. You can download a single zip file (Pharo Standalone) and it will give you
all the tools of a modern IDE without shitting all over your system and with
faster startup than Atom, VS Code or even LINQPad.

2\. The environment retains all its state across restarts. The editor stuff,
the running state of the program - everything.

3\. You have the same capabilities as the people who developed the language.
You program, the run-time environment and the editor itself can be browsed and
edited by the same set of tools, without any extra hoops. There is very little
"magic".

4\. The syntax of the language is designed so that you can create DSLs without
using macros or pre-processors.

5\. It's the only environment in my recent memory where I can do stuff without
opening the web browser to search for something every 5 minutes.

6\. IMO, breaking the system into four-tier structure made the whole thing
much more tractable than infinitely nested directories or namespace
hierarchies. I also like that there is no need to manage files with code.

------
zerr
Pharo always looks cute, but does anyone here use it, even for toy stuff?

~~~
armagon
"The future is already here – it's just not evenly distributed." \- William
Gibson

I did some work in Smalltalk (working on a mod of Scratch 1.4, which was
written in Squeak Smalltalk from the turn of the century). Once you got used
to it, it was amazing. The environment is lively, and you can debug into
everything.

The tech is great; it is just that the community of people who know it is
relatively small. If you wanted to develop an open-source project in it, you
may have a harder time finding other developers to help.

On the other hand, if you wanted to make a cross-platform desktop application
that doesn't look native (which, given the prevalence of Electron, doesn't
seem to matter too much to people), this would be an excellent choice.

I wish I could do more development with Pharo. I also think the web framework
Seaside would be fun to work with. [http://seaside.st/](http://seaside.st/)

We just need to go back in time to twenty years or so and take a different
fork ...

~~~
klez
> On the other hand, if you wanted to make a cross-platform desktop
> application that doesn't look native (which, given the prevalence of
> Electron, doesn't seem to matter too much to people), this would be an
> excellent choice.

Yeah, as if people are going to install a whole virtual machine to run a chat
application...

Wait...

~~~
rbanffy
> Yeah, as if people are going to install a whole virtual machine to run a
> chat application...

You can install an application that launches the VM with the desired image and
the user will never know the app is running inside a Smalltalk VM.

~~~
masukomi
i think they were being sarcastic, because slack is JavaScript in a VM
(Electron) to run a chat application.

------
ralphc
16" MacBook Pro, Catalina, I get "“PharoLauncher.app” can’t be opened because
Apple cannot check it for malicious software." "This software needs to be
updated."

~~~
ralphc
For others coming along later, right click, pick "open". If you don't get an
"open" button on the dialog, go to system preferences, security, general. You
should see a button that says "Pharo Launcher wouldn't open. Open anyway" or
something of that nature. Click. Profit!

------
zerr
vm doesn't start on Windows - "Unsupported 16-bit Application".

~~~
Katuva
I resolved the issue by navigating to the directory where it downloaded the
vm's, deleting the folder and unzipping manually. Seems the launcher corrupts
the files when it unzips them.

------
hliyan
Five clicks through from the home page and I still can't seem to find a
"Getting started" / "Hello World" example.

~~~
seandenigris
One click on the "Documentation" tab provides links to several
screencasts/tutorials. Are you looking for something specific? "Hello world"
doesn't cleanly map to an environment as comprehensive as Pharo because there
are so many options. Do you want "hello world" to output to the terminal
(Stdio stdout << 'Hello world')? A window? A growl-style popup (UIManager
default inform: 'Hello world')? The transcript (Transcript show: 'Hello
world')?

------
m4r35n357
website down?

~~~
lucb1e
> This page
> ([http://pharo.org/news/pharo8.0-released](http://pharo.org/news/pharo8.0-released))
> is currently offline. However, because the site uses Cloudflare's Always
> Online™ technology you can continue to surf a snapshot of the site.

Except that I see a big error page.

Isn't CloudFlare supposed to help with this? The message on top seems to
indicate that, but when I (back in the day) tested with CF on my domain it
just proxied every request and failed when my server didn't respond, having
zero advantage over just using my server directly (in fact, even having the
downside that Tor users now couldn't reach my site anymore). Seems like that's
still the case.

~~~
singlow
It is optional to let CloudFlare cache the content. I believe you can control
it from the CloudFlare control panel as well as affect it from your HTTP
headers. So I bet they have the feature enabled on the panel but their HTTP
headers tell CloudFlare not to cache the page, maybe accidentally.

~~~
drivers99
It is caching the static assets (js, css, png, etc) based on default
extensions[1]. The page itself is dynamic, likely for the comment feature at
the bottom of the page. If they wanted to cache it, they could probably add
some caching headers (have to change the responses on the origin) or a Page
Rule in cloudflare (and not have to change anything on the server). But that
won't be a good idea if people can login to the page to comment (not sure if
CloudFlare can tell if someone is not-logged-in and return a cached version;
that would be interesting). I see CF-Cache-Status: DYNAMIC header, which is:

"The resource content type was not cached by default and your current
Cloudflare caching configuration doesn't instruct Cloudflare to cache the
resource. Instead, the resource was requested from the origin web server. Use
Page Rules to implement custom caching options."

[1] [https://support.cloudflare.com/hc/en-
us/articles/200172516-U...](https://support.cloudflare.com/hc/en-
us/articles/200172516-Understanding-Cloudflare-s-
CDN#h_a01982d4-d5b6-4744-bb9b-a71da62c160a)

~~~
singlow
Cookie-based cache by-pass is a premium paid-only feature last time I used
CloudFlare.

------
AtlasBarfed
Great. Super. Has it been ported to a "real" VM yet? I'm going off of
Wikipedia and the 16-bit windows error below.

I can see that the "radical: always-debug, always-on might need a real VM, but
it's apparent there isn't enough base for this to produce a true VM.

Is it really impossible to port to the JVM, the javascript VMs, or something
similar? Otherwise I fear this is doomed to toy status.

~~~
masukomi
two things. First though, please google before getting all dismissive.

1) YES smalltalk _has_ been ported to the JVM
[https://www.redline.st/](https://www.redline.st/) AND you can also run it in
the GraalVM [https://www.graalvm.org/](https://www.graalvm.org/)

2) I'm pretty sure the initial JVM was a clone / extension of a Smalltalk VM.
Having trouble googling the details, but while you may be having trouble
getting it to work on your particular Windows install you might want to
consider that you're possibly ignorant of the fact that the Smalltalk VM is
not only one of the best available but battle tested over decades.

I would guess that what you're seeing is a particular windows issue that has
nothing to do with the VM itself.

~~~
AtlasBarfed
I did, yes I know that Smalltalk needed a VM, Pharo == smalltalk, and the
like.

Wikipedia for Pharo says they have a VM with JIT, etc. I have never heard a
peep about the Smalltalk VM in any circumstance as a performant target for any
language. Ever.

If it's battle tested and great, why isn't it used for anything else than
Smalltalk ports? Is there a python, ruby, javascript, java, etc port to the
smalltalk VM?

If it sounds like I'm being dismissive, that's not the point. The point is the
Smalltalk ecosystem, like Lisp derivatives, likes to have its own top-to-
bottom stack completely isolated from "real" execution platforms.

For Lisp it's so bad that Clojure is rejected by some Lisp purists because it
can JVM / JS compile.

IMO, for example, Ruby made a strategic error writing their own VM rather than
just embracing the JVM as the main VM, although when Ruby was writing their VM
invokedynamic hadn't been added to the JVM. Well, and they should have added
some optional typing.

------
atemerev
So, still no HiDPI/Retina support. This is probably the most requested feature
since at least Pharo 4, and nobody seems to be interested in implementing it.

~~~
fmakunbound
I'm on a retina mac, and it looks like this
[https://imgur.com/a/iSkHMlJ](https://imgur.com/a/iSkHMlJ) text rendering-
wise. Maybe it's my middle age eyes, but it looks fine to me???

~~~
virgil_disgr4ce
The Pharo window is significantly pixelated in comparison to the browser
window on the left

~~~
fmakunbound
Interesting. Maybe I need new goggles.

