[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

[py8] Index Page

The py8 platform

We are runing S8 Smalltalk systems in Python execution runtimes.
Status: release 1.0 (Nov 2021)
Actually under intensive testing and used at application/module level

Follow us on Facebook
License terms: the same as all S8 contents, MIT licensed

Community release

It is the first release of this platform, it is considered ready for development of applications.
Bug and issues are reported here.
Contact us on Facebook in case of problems or if you need more information on how to use S8 to develop your python apps.

Executing py8 platform

We have many alternatives to run py8 systems, basically we need a Python VM to host a S8 snapshot file. We load the snapshot and the system is instantiated and start running as usual.
The snapshot can be built in console mode (same as we do for most S8 platforms) to be embedded in the hosting execution environment

Steps to start working on [py8] platform (console mode):
  1. ensure you have Python machinery installed and running OK
  2. download the py8.zip file from U8 service
  3. decompress the file in a new folder
  4. execute the py8.py file to start a clean image
    python -i py8.py
  5. evaluate python commands using smalltalk global variable to access your objects
  6. Sample expressions

Uploaded Image: idea.gifIf you want to run a complete snapshot file execute
python -i s8.snapshot.py

Where we are running py8 ?

We have tested that the system runs in the following execution environments, without changes (nor adaption of smalltalk code):
OS, Runtime contextRuntime/Python version
Big Sur (11.5.2)
3.8.2, Jun 8 2021
Windows 10
64 bits
3.9.2, Feb 19 2021
Raspberry Pi
Raspbian 8.0
3.9.6, Aug 19 2021
Android (kivy)S8 systems running Android with native binding and Kivy framework
iOS (kivy)S8 systems running iOS with native binding and Kivy framework
Desktop (kivy)S8 systems running desktop GUI (Kivy framework)
Android 7.1.1Pydroid 3 - 3.8.3, Jun 15 2020
Android 10Pydroid 3 - 3.8.3, May 27 2020
iOSPyto 18.0.8 - python 3.10.0+

It has been tested running the default system image with:
The tests includes:

Well known bugs and issues

If you observed an issue or bug, please report it here or in our facebook group

What is included in py8?

The complete S8 kernel. It is the SAME system that is running and used in all platforms where S8 smalltalk is running. The initial snapshot was produced Exporting the system using an instance of PythonEncoder (browse Exporter and NativeEncoder hierarchy to learn more on how to jump to another native language). After decompression the py8.zip file see under "build" folder the source files to produce an image from an existing S8 system (running on other platform & native language).
The "s8" folder contains the s8 kernel used to produce the initial snapshot (after running the first snapshot on a python VM, you can save the image/snapshot as usual).
The "s8/library" folder has S8 frameworks of common toolset and source files for The Python Standard Library (see s8/library/StandardLibrary.st).
The "s8/apps" folder contain applications samples and frameworks extending py8 for common application contexts.
List of application samples:
cmdTello.stFile implementing Tello dhrone commands for realtime driving of a DJI's Tello dhrone.
[py8] DJITelloPyImplementation sample: DJITelloPy API
DJI Tello Drone programming with image capture, and S8 video proccessing (with OpenCV)
[py8] KivyInstalling and implementing Kivy Apps
Sample for hello world GUI app
[p4a8] AndroidRunning py8 systems in android devices with native access and Kivy GUI
[py8] Pillow Installing and using Pillow - Python Imaging Library
[py8] Plyer Installing and using Plyer
[py8] OpenCVComputer Vision framework
[upy8] indexS8 for MicroPython boards
[py8] PyDroidS8 running on Pydroid 3 - IDE for Python 3

ToDo list

If you want to collaborate on this platform, you can peek a topic and discuss or get guidance to implement it.
Suggested topics in our ToDo list

Notes on py8 platform

Other references