From gary@gbenson.net Mon Oct 19 19:58:00 2015 From: gary@gbenson.net (Gary Benson) Date: Mon, 19 Oct 2015 19:58:00 -0000 Subject: Test #2 Message-ID: >>WELCOME TO INFINITY<< From gbenson@redhat.com Wed Oct 21 08:58:00 2015 From: gbenson@redhat.com (Gary Benson) Date: Wed, 21 Oct 2015 08:58:00 -0000 Subject: I8C 0.0.1 released Message-ID: <20151021085811.GA14205@blade.nx> I8C 0.0.1 released! Release 0.0.1 of I8C, the Infinity Note Compiler, is now available. This includes I8X, an interpreter for unit testing compiled notes. You can install I8C and I8X directly using pip: pip install --user i8c # installs in your home directory sudo pip install i8c # installs as root The source is available on PyPI: https://pypi.python.org/packages/source/i/i8c/i8c-0.0.1.tar.gz (md5sum e948450b447ca897bd54d40df83ff438) There is a web page for I8C at: https://sourceware.org/gdb/wiki/Infinity/ That page includes information about the Infinity mailing list, details on how to access I8C's source repository, and information about the Infinity system in general. -- Gary Benson From root@sourceware.org Sat Oct 24 16:33:00 2015 From: root@sourceware.org (root@sourceware.org) Date: Sat, 24 Oct 2015 16:33:00 -0000 Subject: test3 Message-ID: <20151024163255.33736.qmail@sourceware.org> now with fewer headers on the listarch web pages From gbenson@redhat.com Wed Oct 28 10:24:00 2015 From: gbenson@redhat.com (Gary Benson) Date: Wed, 28 Oct 2015 10:24:00 -0000 Subject: Language and note format changes coming up Message-ID: <20151028102450.GA32115@blade.nx> Hi all, I don't know if anybody is playing with Infinity yet, but I have some compatibility-breaking source language and note format changes in the pipeline. SOURCE LANGUAGE =============== 1. Operators with more than one argument (i.e. "name" and "cast" will require a comma between their argument. This is for consistency with #3. (I could make this optional, but pretty much all source will need rewriting because of #2 so...) 2. Externals will no longer be pushed onto the stack at function entry. You will need to use "load" to access them. 3. As a shortcut, several operators will gain an optional first argument which incorporates a "load". e.g. instead of: load some::function call you may use the shortcut: call some::function I'll likely add this to the branch operators too, so instead of: load NULL beq label you can do: beq NULL, label The folded loads are optional (i.e. you can still use the original form) and both will generate the same bytecode. This is all basically because of #2. Originally it seemed pushing externals onto the stack at function entry would minimize the differences between Infinity and "standard" DWARF, but actually it just means you have more things to keep track of while writing the notes. I'd thought this change would result in longer notes (because of the extra operations to load the constants) but the ones I've converted are shorter because the extra operations are offset by not requiring so many stack-shuffling operations. NOTE FORMAT =========== 4. The "max_stack" field from the info chunk and the byteorder mark field from the code chunk are being moved into a new code info chunk with a type_id of 6. 5. The info chunk now contains only the function's signature. It's being renamed the signature chunk with a type_id of 5. 6. The code chunk now contains only bytecode and has had its version bumped to 2 to indicate this. Aside from a cleaner structure, this change makes it possible to add further information about the code. Previously this would have had to go in the info chunk or in a new chunk--the code chunk was pretty much unmodifyable. But that left the info chunk into a kind of kitchen sink, full of stuff that should really have been somewhere else. I8X 0.0.2 will support 0.0.1's note format (with info and v1 code chunks) but this is deprecated and will be removed (probably just after 0.0.2 is released but certainly before 1.0.0). I8X 0.0.2 will push externals onto the entry stack only if the code chunk in the note is version 1. This also is deprecated and will be removed. Cheers, Gary -- http://gbenson.net/ From gbenson@redhat.com Fri Nov 6 16:09:00 2015 From: gbenson@redhat.com (Gary Benson) Date: Fri, 06 Nov 2015 16:09:00 -0000 Subject: Language and note format changes coming up In-Reply-To: <20151028102450.GA32115@blade.nx> References: <20151028102450.GA32115@blade.nx> Message-ID: <20151106160920.GA782@blade.nx> This is all in https://github.com/gbenson/i8c now. I'll spend some time working with it next week and maybe release 0.0.2 if it's all good. Gary Benson wrote: > Hi all, > > I don't know if anybody is playing with Infinity yet, but I have some > compatibility-breaking source language and note format changes in the > pipeline. > > SOURCE LANGUAGE > =============== > > 1. Operators with more than one argument (i.e. "name" and "cast" > will require a comma between their argument. This is for > consistency with #3. (I could make this optional, but pretty > much all source will need rewriting because of #2 so...) > > 2. Externals will no longer be pushed onto the stack at function > entry. You will need to use "load" to access them. > > 3. As a shortcut, several operators will gain an optional first > argument which incorporates a "load". e.g. instead of: > > load some::function > call > > you may use the shortcut: > > call some::function > > I'll likely add this to the branch operators too, so instead of: > > load NULL > beq label > > you can do: > > beq NULL, label > > The folded loads are optional (i.e. you can still use the original > form) and both will generate the same bytecode. > > This is all basically because of #2. Originally it seemed pushing > externals onto the stack at function entry would minimize the > differences between Infinity and "standard" DWARF, but actually it > just means you have more things to keep track of while writing the > notes. I'd thought this change would result in longer notes (because > of the extra operations to load the constants) but the ones I've > converted are shorter because the extra operations are offset by > not requiring so many stack-shuffling operations. > > NOTE FORMAT > =========== > > 4. The "max_stack" field from the info chunk and the byteorder mark > field from the code chunk are being moved into a new code info > chunk with a type_id of 6. > > 5. The info chunk now contains only the function's signature. It's > being renamed the signature chunk with a type_id of 5. > > 6. The code chunk now contains only bytecode and has had its version > bumped to 2 to indicate this. > > Aside from a cleaner structure, this change makes it possible to add > further information about the code. Previously this would have had > to go in the info chunk or in a new chunk--the code chunk was pretty > much unmodifyable. But that left the info chunk into a kind of > kitchen sink, full of stuff that should really have been somewhere > else. > > I8X 0.0.2 will support 0.0.1's note format (with info and v1 code > chunks) but this is deprecated and will be removed (probably just > after 0.0.2 is released but certainly before 1.0.0). > > I8X 0.0.2 will push externals onto the entry stack only if the code > chunk in the note is version 1. This also is deprecated and will > be removed. > > Cheers, > Gary > > -- > http://gbenson.net/