vocalounge.cafe is one of the many independent Mastodon servers you can use to participate in the fediverse.
A Mastodon instance specializing in Vocaloid, UTAU, and anything relevant to vocalsynth culture.

Administered by:

Server stats:

38
active users

#embedded

1 post1 participant0 posts today

Here I go a bit more computer-science-ish

To Stack or not to Stack, Queue is the Question

How ual reimagines data structures with perspectives: one container, many possibilities.
github.com/ha1tch/ual/blob/mai

In traditional computer science, stacks, queues, priority queues, and other sequential containers are taught as distinct data structures. The ual programming language takes a fundamentally different approach through its stack perspectives model, which unifies these seemingly disparate structures under a single container abstraction.

ual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
GitHubual/blog/stacks/tostack-or-not_queue-is-the-question.md at main · ha1tch/ualual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual

UPDATE: ual 1.5 proposal

Defer Stack Mechanism

github.com/ha1tch/ual/blob/mai

This document proposes a Go-inspired defer mechanism for ual implemented through a dedicated @defer stack and offering a convenient defer_op syntactic sugar. This feature aims to simplify resource management and enhance error handling robustness.

ual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
GitHubual/spec/ual-1.5-PROPOSAL-defer.md at main · ha1tch/ualual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
#ual#uallang#foss
Continued thread

From Forth to ual

github.com/ha1tch/ual/blob/mai

This is a new addition from the perspective of the philosophy of programming languages.

Some of you may be interested in this particular addition, feel free to ignore the rest in the series if you are exclusively focused on the Forth-like aspects of ual,

ual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
GitHubual/doc/philo/ual-philosophy-04-forth.md at main · ha1tch/ualual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
#ual#uallang#foss

UPDATE: The philosophy of ual.

If you're more the kind of person who would like to understand better from a humanistic point of view what values are encoded in the language, this is for you. It's not a big proclamation, and it's nothing like Larry Wall's exegesis, but I needed to try to understand myself at least in this way that works for me. Hope it works for some of you too.
github.com/ha1tch/ual/tree/mai

ual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
GitHubual/doc/philo at main · ha1tch/ualual is a stack-oriented programming language for small systems with a unified approach to program safety. - ha1tch/ual
#ual#uallang#foss

Of course, dear Spidey, that with great power comes great responsibility, creating too many stacks can be overkill for some resource-constrained systems. But this is becoming less of a problem with new multi-core MCUs running at hundreds of Mhz, and with several megabytes of RAM.

What #ual says is: if your machine is not very powerful, we may be able to make it less painful to program highly optimised code for it. If your target machine is powerful, we may help to speed up your development cycles, and you may construct more nuanced, sophisticated, and reliable software with less effort.

Continued thread

New #ual programmers can start coding following most ideas they would assume to work using Lua, and progressively adopt the ual-specific stacked mode when it makes sense. For example, in resource-constrained systems where an algorithm using a Forth-like stack can be more efficient for certain tasks.

The > operator indicates a line that operates on the stack system, using a vocabulary for the most part similar to Forth's.

The @stackname > expression allows the programmer to select on which stack the operations are executed. The system comes with a data stack (@dstack) and a return stack (@rstack) built-in, but you can instantiate new ones, since stacks are first class objects in ual.

Take for example this implementation of Dijkstra's shortest path algorithm, uses its own separate stack to perform its computation.
github.com/ha1tch/ual/blob/mai

Hope you like it!

Continued thread

Other ideas in the works:

  • Adding the zxa assembler as one additional backend, to produce Z80 binaries.
    github.com/ha1tch/zxa
    in the future this could allow ual programs to target the ZX Spectrum and the RC2014.

  • Adding a uxntal backend to produce uxn roms.

Introducing the concept of transmutation

  • Write ual, or Z80 assembler, then send uxn or Z80 binaries to an ESP32 system, and have the binaries transmuted into Xtensa or RISC-V binaries as sort of shaders that run in-mcu.
A simple Z80 assembler for the ZX Spectrum written in Go - ha1tch/zxa
GitHubGitHub - ha1tch/zxa: A simple Z80 assembler for the ZX Spectrum written in GoA simple Z80 assembler for the ZX Spectrum written in Go - ha1tch/zxa

ual is a new programming language for small systems, it borrows from Lua, Forth, and Go/TinyGo.
github.com/ha1tch/ual

It's not a scripting language, it compiles to TinyGo, and Go, therefore binaries are produced for the same targets of those compilers. In the case of TinyGo using an optimised LLVM-based backend (esp32, risc-v, wasm, various mcus), and for mainstream server/desktop computing architectures via the Go compiler's own backend (x86-64, arm64, etc.) and OSes (Linux, Mac, Windows).

((Work in progrees))
Not ready to use yet, but I thought I'd RFC before I complete the first implementation, whilst there's still time.

Hope you find it interesting!

Spec:
github.com/ha1tch/ual/tree/mai

Examples:
github.com/ha1tch/ual/tree/mai

Let me know what you think!

ual is the daughter of Forth, Lua, and Go. Contribute to ha1tch/ual development by creating an account on GitHub.
GitHubGitHub - ha1tch/ual: ual is the daughter of Forth, Lua, and Go.ual is the daughter of Forth, Lua, and Go. Contribute to ha1tch/ual development by creating an account on GitHub.

My latest blog post: Simplify VCD

mikecoats.com/simplify-vcd/

Simplify VCD is a tool designed to make working with Value Change Dump (VCD) files more efficient and faster. This tool enables users to clip sections of VCD files, trim irrelevant data, and reduce the resolution to a more manageable timescale, significantly improving processing speed and usability.

mikecoats.comSimplify VCD
More from Mike Coats 🏴󠁧󠁢󠁳󠁣󠁴󠁿🇪🇺🌍♻️

#fluConf2025 will feature a track on hardware-hacking and permacomputing. We want to feature articles and presentations that explore matters related to how devices interact with the physical world, how to repair and adapt those devices for different use-cases, and the challenges associated with maintaining any technology over long periods of time.

We welcome proposals that address:

* open chip design, fabrication, and supply chains

* open-source schematics, 3d printing, and all other maker-oriented skills

* off-grid power supply solutions

* advocacy for the right-to-repair and against DRM

* mobile operating systems and gaming hardware

* radio, mesh networks, routing, and all things networking

* creative or useful applications of embedded systems

* peripherals, device drivers, and storage media

* old or unusual processor architectures, or systems featuring specialized co-processors

Apply up until midnight of January 19th, 2025 (anywhere on Earth)

fluconf.online/apply/

fluconf.onlineSubmit a proposalSubmit your proposal for FluConf 2025 by January 19th, 2025