[Cuis-dev] OMeta working again for Cuis 6.3

Andres Valloud ten at smallinteger.com
Sat Apr 13 21:26:15 PDT 2024


That Nile bit is a great example of code reduction.  The demos were 
quite impressive and the whole thing was around IIRC 400 LOC or so.  Ian 
Piumarta's talk re: to build a better mouse trap is also related because 
of the reference to Earley parsers.

On 4/13/24 20:14, Luciano Notarfrancesco via Cuis-dev wrote:
> Hi Michal,
> That’s very interesting. I have a very concrete application for this. I 
> need to compute with tuples, matrices and polinomials over integers 
> modulo a small modulus (say, it fits in a register, or half register). 
> These tuples, polynomials and matrices are stored in arrays (for example 
> WordArrays, 32 bits per entry). The most critical operation is matrix 
> multiplication, since a lot of the rest can reduce to matrix 
> multiplication. I’ve been experimenting with a small external library 
> written in C that converts to floating point, does matrix multiplication 
> with a BLAS library, and converts back to modular integers, and i call 
> it via FFI. Of course I’d prefer to do all in Cuis… so i’m looking 
> forward for your project!
> 
> Regards,
> Luciano
> 
> On Sat, Apr 13, 2024 at 21:13 Michał Olszewski via Cuis-dev 
> <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
> 
>     __
> 
>     Hi Phil,
> 
>     Thanks! I was alluding to a past suggestion to use OMeta and Dan
>     Amelang's Nile, when they were released back in 2008 as part of
>     VPRI, in Squeak Kernel classes to reduce overall complexity of
>     compilation and graphics rendering.
> 
>     And yes, the generated code would be free of any OMeta deps - in
>     this case it's simply used as compilation pipeline that transforms
>     input code through various compilation stages (AST->AST with
>     optimized special sends->bytecode).
> 
>     It would simplify overall architecture and would perhaps permit to
>     use compiler as service for e.g. syntax highlighting or some other
>     stuff that requires analysis of source code.
> 
>     Currently, it seems like, one has to separately implement parser for
>     syntax styling etc.
> 
>     I'm using OMeta for my bachelor thesis (in very very early stages,
>     defense is in Feb next year) which is about custom high level
>     dynamic streaming language. Pretty much bringing access to high
>     performance computations on CPU & GPU to Cuis, without leaving
>     comfort of it :).
> 
>     I'm going to use it for all stages of compilation (parsing,
>     optimizing, generating etc.).
> 
>     Too early to talk to about details but since I'm going to write the
>     thesis, the language is going to be released at least in some usable
>     state :) Hopefully more.
> 
>     Cheers,
>     Michał
> 
>     On 11.04.2024 08:05, Phil B wrote:
>>     Hi Michał,
>>
>>     I'm still around... just been busy with other things. Thanks for
>>     your interest and efforts!  I'll take a look at your changes
>>     though it will probably be this weekend before I can get to it.
>>
>>     As far as making Cuis a first-class citizen: that's not likely to
>>     happen, nor would it be desirable. (I experimented with that and
>>     the result was not good... there's too much of an impedance mismatch)
>>
>>     Regarding the other areas you touched on:
>>     1) Debugging: there should be a more robust OMeta parser (i.e. a
>>     subclass of OMeta2) to better catch more errors (esp. recursion)
>>     at parse/compile time, when possible.  It's entirely possible that
>>     the syntax needs to be extended to support this.
>>     2) Performance: assuming you're talking about runtime performance
>>     where you have a parser being called repeatedly you probably want
>>     to look at creating a parser that targets (i.e. emits) code for a
>>     more performant parser (there's no law that says OMeta has to
>>     always target OMeta!) as OMeta's PEG is going to have relatively
>>     poor runtime performance vs other parser approaches, especially if
>>     you have any recursion in your parser and/or the input to your
>>     parser is characters (i.e. parsing data files at runtime, for
>>     example.)   I believe that's still an open problem with PEGs.
>>     (not sure as I haven't kept up with the state of the art on this)
>>     3) Cuis compiling etc: use OMeta to emit Cuis/Smalltalk code that
>>     is used anywhere in the image, sure... as long as said emitted
>>     code is free of OMeta dependencies.  Put another way: if your
>>     generated code is in a subclass of OMeta2 and calls the parsing
>>     engine it would probably not be safe enough to use as an
>>     image-level dependency, if your generated code is *not* in a
>>     subclass of OMeta2 you might be fine.
>>
>>     Thanks,
>>     Phil
>>
>>     On Wed, Apr 10, 2024 at 4:37 PM Michał Olszewski via Cuis-dev
>>     <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
>>
>>         Hi all,
>>
>>         I fixed OMeta package from pbella so now it works again for
>>         Cuis 6.3
>>         (>6291). Yay! I made a couple of tests with the grammar
>>         definitions and
>>         syntax highlighting and so far it's kind of back to the
>>         working state:
>>
>>         https://github.com/michalo1334/OMeta-Cuis
>>         <https://github.com/michalo1334/OMeta-Cuis>
>>
>>         Just requested pull to original repo:
>>         https://github.com/pbella/OMeta-Cuis
>>         <https://github.com/pbella/OMeta-Cuis> but not sure if the
>>         author is still
>>         active in the community.
>>
>>         However, in OMeta-derived classes it incorrectly highlights
>>         instance
>>         variables in red and displays := instead of <-. If someone has
>>         time to
>>         take a quick look at the Shout styler code, would be great.
>>         Right now
>>         it's an ugly fix so that there is any highlighting at all -
>>         it's nice
>>         to see a colored text.
>>
>>         And then there is the problem to make OMeta first class citizen
>>         (debugging, improve performance, maybe even use it for Cuis
>>         compiling &
>>         code generation machinery?).
>>
>>         Cheers,
>>         Michał
>>
>>         -- 
>>         Cuis-dev mailing list
>>         Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
>>         https://lists.cuis.st/mailman/listinfo/cuis-dev
>>         <https://lists.cuis.st/mailman/listinfo/cuis-dev>
>>
>     -- 
>     Cuis-dev mailing list
>     Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
>     https://lists.cuis.st/mailman/listinfo/cuis-dev
>     <https://lists.cuis.st/mailman/listinfo/cuis-dev>
> 
> 


More information about the Cuis-dev mailing list