I like C::TinyCompiler because it gives you a clue about
what the module does: C language + tiny + compiler.

--Chris

On Thu, Aug 15, 2013 at 12:07 PM, David Mertens
<dcmertens.p...@gmail.com> wrote:
> Another idea is C::TinyJIT. It's even more descriptive. But C::TinyCompiler
> sounds better.
>
> Thoughts? Votes?
> David
>
> On Thu, Aug 15, 2013 at 11:37 AM, David Mertens <dcmertens.p...@gmail.com>
> wrote:
>>
>> On Thu, Aug 15, 2013 at 9:20 AM, Chris Marshall <devel.chm...@gmail.com>
>> wrote:
>>>
>>> How about Devel::TCC for the bindings/interface/control part
>>
>>
>> I looked through other modules with the Devel:: prefix (thanks to
>> MetaCPAN's ability to do this search). Most modules here are development
>> tools, such as debuggers and memory inspectors. But, to your point, some of
>> them are interesting extensions that might be used in code indefinitely:
>> Devel::Hook, Devel::Main, Devel::Declare, and Devel::REPL.
>>
>> But somehow Devel:: seems a bit too abstract to be helpful. I thought of
>> this more as a plain old set of modules. Furthermore, most of the modules on
>> CPAN that would interact nicely with this distribution are under C::, with
>> the notable exception of Convert::Binary::C. Maybe I should reconsider
>> C::TinyCC or C::TinyCompiler or something like that.
>>
>> I actually really like the ring of C::TinyCompiler: It tells you exactly
>> what it is. :-)
>>
>>>
>>> Alien::TCC (of course) for the detection and installation?
>>
>>
>> Yes, of course. :-)
>>
>>>
>>>
>>> --Chris
>>>
>>> On Thu, Aug 15, 2013 at 8:57 AM, David Mertens <dcmertens.p...@gmail.com>
>>> wrote:
>>> > Hey everyone -
>>> >
>>> > In short, I have written a set of bindings for the library underlying
>>> > the
>>> > Tiny C Compiler and I want to know what package name I should use. I
>>> > would
>>> > prefer a top-level TCC package, in particular because I envision a
>>> > large set
>>> > of derived modules. Thoughts?
>>> >
>>> > David
>>> >
>>> > Motivation and features
>>> >
>>> > The Tiny C Compiler is a C compiler that can compile code for ARM and
>>> > x86
>>> > processors. It was written to compile code very, very quickly, and
>>> > compiles
>>> > code roughly 7x faster than gcc -O0, roughly 40x faster than gcc -O3.
>>> > In
>>> > exchange for quick compile times, you get machine code that isn't as
>>> > highly
>>> > optimized. But it's still machine code.
>>> >
>>> > One of the coolest features of TCC is that if provides libtcc, which
>>> > can
>>> > take a string of C code and compile it to machine code without writing
>>> > anything to disk. That's right, it's a true C jit compiler, just
>>> > waiting for
>>> > some nice Perl goodness to wrap it up.
>>> >
>>> > I've written bindings that expose the compiler's basic capabilities,
>>> > such as
>>> > defining preprocessor symbols, linking to other libraries, adding
>>> > symbols to
>>> > the symbol table, compiling the code, and retrieving compiled symbols
>>> > (i.e.
>>> > functions). I've also created an extension framework for module authors
>>> > to
>>> > wrap all of this into reusable pieces. For example, I've already
>>> > written
>>> > extensions that (1) expose croak() to your compile context, (2) provide
>>> > a
>>> > simple but useful data structure called StretchyBuffer, and (3) allow
>>> > you to
>>> > write C functions that you can call directly from your Perl code. I
>>> > hope to
>>> > some day wrap various C libraries with similar extensions. For example,
>>> > I
>>> > would like to wrap GSL such that a programmer can pull the GSL headers
>>> > and
>>> > symbols into their compiler context with a single Perl command.
>>> >
>>> > Similar Projects
>>> >
>>> > The first module/namespace that comes to mind is Inline::C. Certainly,
>>> > it
>>> > would be possible to create an Inline::TCC. However, Inline operates
>>> > under
>>> > the assumption that compiling code is a relatively costly enterprise,
>>> > whereas my approach to TCC assumes that it is relatively cheap. When
>>> > you
>>> > decide that compiling code is cheap, a whole set of possibilities open
>>> > up
>>> > that you don't have otherwise. The whole extension system is perfect
>>> > for
>>> > TCC, but would be particular to the TCC system, and would not apply
>>> > generally to the Inline system. As such, I don't think it's a very good
>>> > fit
>>> > for the Inline family or namespace.
>>> >
>>> > A second module/namespace is evident when you realize that a very
>>> > primitive
>>> > set of TCC bindings already exist under C::TCC. Unfortunately, that
>>> > project
>>> > does not provide any extension mechanism, or even a way for the
>>> > underlying
>>> > main() function to communicate with Perl. Also, I have tried to contact
>>> > the
>>> > author with no success.
>>> >
>>> > --
>>> >  "Debugging is twice as hard as writing the code in the first place.
>>> >   Therefore, if you write the code as cleverly as possible, you are,
>>> >   by definition, not smart enough to debug it." -- Brian Kernighan
>>
>>
>>
>>
>> --
>>  "Debugging is twice as hard as writing the code in the first place.
>>   Therefore, if you write the code as cleverly as possible, you are,
>>   by definition, not smart enough to debug it." -- Brian Kernighan
>
>
>
>
> --
>  "Debugging is twice as hard as writing the code in the first place.
>   Therefore, if you write the code as cleverly as possible, you are,
>   by definition, not smart enough to debug it." -- Brian Kernighan

Reply via email to