Smalltalk
love
Our great sponsors
Smalltalk | love | |
---|---|---|
24 | 258 | |
260 | 4,378 | |
- | 6.7% | |
0.0 | 9.7 | |
almost 3 years ago | 5 days ago | |
C++ | C++ | |
GNU General Public License v3.0 only | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Smalltalk
-
The Xerox Smalltalk-80 GUI Was Weird
> * I'm assuming the "by the Bluebook" implementation they're referring to is this: *
Or this: https://github.com/rochus-keller/Smalltalk/
-
The seven programming ur-languages
> message passing and late binding combined. "Duck typing" is seriously diminishing it
Actually even ST-72 made synchronous calls, but at least with a token stream interpreted by the receiving object (thus at least a bit of "message passing"). In ST-76 and later versions "message passing" is just nomenclature used by the ST folks for something that is just ordinary method dispatch and call (if you have doubts, you can analyze the innards of the ST-80 VM yourself e.g. with these tools: https://github.com/rochus-keller/Smalltalk ). The major difference is the dispatch based on signature hash (similar to e.g. Java interface method calls) instead of static positions, which enables late binding (at the expense of performance); and since everything including ordinary integers derive from Object, all values and objects are subject to dynamic method dispatch; it's no coincidence that Smalltalk was the first language to allow real duck typing. The unification of scalar values and references, dynamic typing, and likewise the minimal syntax where control structures are implemented by means of runtime constructs were already known from Lisp; also closures (i.e. ST blocks) were already known before they were added to ST.
-
my programming language
Here is one even in Lua: https://github.com/rochus-keller/Smalltalk/
-
LeanQt – GUI is here, Widgets are near
> 10kSLOC for the entire universe
It is the nature of idealists that they see the world idealized. Smalltalk-80 itself has nearly 30 kSLOC; it's just more difficult to count, but I wrote tools which can do it (https://github.com/rochus-keller/Smalltalk/).
-
50 years Smalltalk anniversary celebration at Computer History Museum
Why should "perform" be a message? It's just a method of the Object class, which is the superclass of Integer. You can use my St80ClassBrowser and St80ImageViewer (see https://github.com/rochus-keller/Smalltalk/) to check the ST-80 source code and image if you want; there is a list of all selectors and the classes which implement them. Going up the class hierarchy when doing virtual method dispatch is a fundamental concept of all object-oriented implementations; in contrast to e.g. C++ this can be done dynamically at runtime in Smalltalk or Java (which is also called late binding). In contrast to Smalltalk in Java the class loader verifies that a method for the referenced signature actually exists; in Smalltalk you can try to dispatch any signature which can result in a call to the doesNotUnderstand method of the Object class.
-
A History of Lua
> a large lua game code base, over 4000 files, 1.5 million lines of code
Interesting; how do you manage to keep consistency? Do you have special tools to e.g. detect inadvertent global variables? I once wrote a Smalltalk VM in Lua (https://github.com/rochus-keller/Smalltalk/blob/master/Inter...) which is a much smaller code base but even with this size I quickly would have lost track of e.g. scopes and names without tools I had to write myself (https://github.com/rochus-keller/LJTools).
-
Smalltalk Squeak 6.0
It is true, that there is uncollected garbage in the original Xerox ST80 image. I've built some tools to analyze the image and also a VM which can be interrupted at any time to analyze the current state of the image (see https://github.com/rochus-keller/Smalltalk).
There are two zombie processes (OID 6662 and 19ba). There are also a couple of BlockContext and MethodContext which have a nil sender and a reference to an unknown method, but which are still referenced from somewhere (i.e. the collection is prevented even if it is not implemented by reference counting. E.g. OID 79a2 of class BinaryChoice. I have a full list if anybody is interested.
-
Celebrating 50 Years of Smalltalk
Integers are actually directly stored, i.e. without boxing/indirection by a pointer. The Smalltalk object memory doesn't have pointers in the C sense, but rather indices into the object table. If you're interested I've implemented a couple of tools to study the original Smalltalk-80 VM, see https://github.com/rochus-keller/Smalltalk/.
-
Ask HN: Admittedly Useless Side Projects?
- https://github.com/rochus-keller/Smalltalk/ Parser, code model, interpreter and navigable browser for the original Xerox Smalltalk-80 v2 sources and virtual image file
- https://github.com/rochus-keller/Som/ Parser, code model, navigable browser and VM for the SOM Smalltalk dialect
- https://github.com/rochus-keller/Simula A Simula 67 parser written in C++ and Qt
> do you regret those endeavours?
No, not in any way; the projects were very entertaining and gave me interesting insights.
- Minimalism in Programming Language Design
love
-
Ask HN: Yo wants to build a game, I'm lost. What can I do?
I've built a few games with my son over the years. The fun part for us was all about fast iteration, and then laughing at the bugs together.
There are some other recommendations here for how to approach 3d, and he is specifically asking for 3d -- but I want to put in one more pitch for 2d: the fun-to-tedium ratio can be much higher.
I wonder if you could spend some time prototyping some of his ideas in LÖVE https://love2d.org/ -- if you show him the smallest sketch of something working, he might have an idea about what to add next.
Many years ago, on a flight, we went from 0 to game before we landed (with no experience).
-
Show HN: A variant of Conway's Game of Life in color you can run on your phone
* When a cell is born it randomly takes on the color of one of its (3) parents.
To try it out:
1. Install LÖVE for your device from https://love2d.org (~5MB and open source). (iOS requires building from source on a Mac, or installing the third-party Love2D Studio: https://love2d-studio.marknoteapp.com)
2. Install my Lua Carousel from https://akkartik.itch.io/carousel (~100KB). It includes all its source code and can be edited live on a computer as it runs.
3. Copy the ~100 lines of code from the bottom of https://akkartik.itch.io/carousel/devlog/651711/new-version-after-9-days and paste them into Lua Carousel.
-
Gearing up for Lua
Probably the most important piece of software we'll be playing around with is a game engine called LÖVE. Lua is well known around developer circles as being a good scripting language when it comes to making games, and this engine is one of the more popular. I'll be going through installation at the end of this post.
-
Original Sling'n'shoot Worms Game
I got it – these are the steps I took:
1. Download Love from https://love2d.org/
-
Can't make my mind about which engine to use
libGDX is great, but I can understand if it's not for some people. This also applies to love2d, raylib and Monogame
-
How Do I Compile/Install Love 0.10.2 on Linux?
You don't need to use git if you don't want to. Try downloading the 0.10.2 source directly here (the file you want is love-0.10.2-linux-src.tar.gz); I see you've tried this already but try again just to see what happens. Extract it to a directory (e.g. love-0.10.2-linux-src) and then run:
-
Not only Unity...
Love2d (MIT/C++/Lua) https://github.com/love2d/love
-
Ask HN: Released games built on FOSS engines?
- Löve (doesn't have a separate page, but showcases a few games at the bottom of the page): https://love2d.org
-
How to have the coolest booth at a tech conference 🕹👾
The game, Wasp Escape, was built using the open-source Löve 2D game library for Lua.
-
I want to make a game but I'm scared...
love2d (lua) is a productive, fun, good docs, and most importantly proven / field-tested 2d game library, with easy to learn fast to compile and fast to run language - lua. while lua might not have a lot of features as python, the big bonus is that its much more focused language, which is important because otherwise you can get easily distracted on bells and whistles that other programming languages provide, i know that from experience
What are some alternatives?
Oberon - Oberon parser, code model & browser, compiler and IDE with debugger
raylib - A simple and easy-to-use library to enjoy videogames programming
Lua - Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.
Godot - Godot Engine – Multi-platform 2D and 3D game engine
Som - Parser, code model, navigable browser and VM for the SOM Smalltalk dialect
MonoGame - One framework for creating powerful cross-platform games.
are-we-fast-yet - Are We Fast Yet? Comparing Language Implementations with Objects, Closures, and Arrays
Godot Card Game Framework - A framework which comes with prepared scenes and classes to kickstart your card game, as well as a powerful scripting engine to use to provide full rules enforcement.
squeak.org - Squeak/Smalltalk Website
TIC-80 - TIC-80 is a fantasy computer for making, playing and sharing tiny games.
zigbee-lua - Zigbee coordinator and tools for LuaJIT
bevy - A refreshingly simple data-driven game engine built in Rust