Subject: Re: bug#73188: PEG parser does not support full PEG grammar

From: [email-masked]
Date: Mon, 23 Dec 2024 14:04:22 -0800

<tl;dr>
    • Late kudos to Ekaitz for this great PEG contribution, especially RISCV,
      which will IMO play a key part in the future of human secure control over machines :)
    • Is there a trustable git repo I could clone to follow future developments of this work?
    • IWBN to have an example doc for how to define a DSL and its interpreter a la brainf*ck,
      but compiled suitable for running in qemu bullet-proof container. Scroll to end of this email
      for what I was surprised worked, though it may have compromised my system, I'm not sure: CAVEAT! :)
</tl;dr>

On +2024-12-22 22:22:09 +0100, Ludovic Courtès wrote:
> Hi Ekaitz,
> 
> Apologies for applying the wrong version of the patch series!
> 
> I pushed the 3 patches you just sent:
> 
>   6750f6cc8 * PEG: string-peg: Add HTML5 grammar test.
>   38ad26497 * PEG: string-peg: Better support for escaping.
>   c86a48a92 * PEG: string-peg: Fix [^...] interpretation.
> 
> I added commit logs that follow the project’s conventions (same as
> Guix).
> 
> In the future, when a patch fixes a bug, please include a test case that
> reproduces the bug being fixed; possibly add information in the commit
> log about the commit that introduced the bug/regression.  This is useful
> to get a good understanding of the situation.  (I understand in this
> case the problem was mostly me applying an earlier version.)
> 
> And bonus points if you provide commit logs.  :-)
> 
> Thank you!
> 
> Ludo’.
> 
> 
> 

-=-=================================-=-

Here is what worked way back when ludo published
    <https://lists.gnu.org/archive/html/info-gnu/2022-12/msg00007.html>
(a release announcement email that IMO is a paragon of release announcements)

I'm not suggesting running this as I did, since I am not sure about security bugs,
then and since, but I did it back when Ludo realeased it. CAVEAT! YOU HAVE BEEN WARNED!
(Tips on published vulns appreciated)

But runvm (below) seemed to work amazingly under (debian-based) pureos wayland.

$ cd ~/wb/gxqemu/
$ file *
guix-system-vm-image-1.4.0.x86_64-linux.qcow2: QEMU QCOW2 Image (v3), 32255246336 bytes
runvm:                                         Bourne-Again shell script, ASCII text executable

$ ls -ltrad *
-rwxr-xr-x 1 bokr bokr        211 Feb  7  2024 runvm
-rw-r--r-- 1 bokr bokr 8862695424 Oct 14 02:17 guix-system-vm-image-1.4.0.x86_64-linux.qcow2

$ du -h guix-system-vm-image-1.4.0.x86_64-linux.qcow2 
8.3G	guix-system-vm-image-1.4.0.x86_64-linux.qcow2

$ cat -nA runvm 
     1	#!/usr/bin/bash$
     2	$
     3	qemu-system-x86_64 \$
     4	   -nic user,model=virtio-net-pci \$
     5	   -enable-kvm -m 2048 \$
     6	   -device virtio-blk,drive=myhd \$
     7	   -drive if=none,file=guix-system-vm-image-1.4.0.x86_64-linux.qcow2,id=myhd$
$

$ # I'm not doing the following, since I am not sure about security bugs, but I did it
$ # when Ludo realeased it (with a realease announcement email that IMO is a paragon of
$ # relase announcements):
    <https://lists.gnu.org/archive/html/info-gnu/2022-12/msg00007.html>
$ # 

$ # ./runvm &
$ # in a system with Wayland as the display compositor, this runs the image in the foreground AND
$ # continues running the term CLI '(bash)' in the background, amazingly compositing both anything
$ # running via X-wayland headless Xorg, like maybe firefox-esr, and the qcow image, so you can
$ # mouse around and switch between the two.
$ 
$ # NOTICE: Not responsible for consequences of trying this: YOU HAVE BEEN WARNED :)
$

$ uname -a
Linux BRL14v1 5.10.0-33-amd64 #1 SMP Debian 5.10.226-1 (2024-10-03) x86_64 GNU/Linux

$ pwd
/home/bokr/wb/gxqemu

$ cd ~/wb/guix/guix
$ git log|head
commit e92b20a41a026b8af7dd2031eb61267b061617b5
Author: Tomas Volf <[email-masked]>
Date:   Fri Dec 13 17:27:46 2024 +0100

    services: mingetty: Support waiting on shepherd services.
    
    For auto-login on systems with elogind, dbus-system needs to be started.  This
    commit adds ability to express that ordering.
    
    * gnu/services/base.scm (<mingetty-configuration>): Add shepherd-requirement
$ 
-=-=================================-=-

I am interested in using Ekaitz's Peg work and predecessor guile work of Andy Wingo and Ludo
to produce secure minimal-code guile extensions displaying popups showing e.g. progress
graphics based on direct wayland event protocols, to be able to show status of "hung"
looping or deadlocked threads, subject ot user privilege authentication.

IIRC the display ran at 60hz before starting the cow2 image and dropped to 30hz when showing
both display outputs at the same time. If I get time, I'll try to take a video with my phone
to show it, but don't hold your breath ;-)

It would be interesting to try a minimal wayland for mes too :)

Obviously these are wip-thoughts ;-)

Thanks for reading :)
Happy Holidays
--
With kind regards,
Bengt Richter