With an interest of playing with LLVM based just in time compiling I made a
clone of the [expr] family of objects that parses, compiles and then
executes the compiled code versions of the expressions you provide it.
It could still use a little cleanup but I believe it has all of the
features of the cloned objects now, plus a [print( message to print out the
generated LLVM assembly.
I'm curious if anyone has some CPU intensive expr~ or fexpr~ examples that
I could try to benchmark these against?
Also, does anyone have a good benchmarking solution for pd?
Anyways, if you're interested in checking it out the source is here:
https://github.com/x37v/jit-expr
I'll submit a deken package once its been tested enough, I resolve a couple
questions I have about potential memory leaks and finalize the licensing.
-Alex
We have been working on pdlibbuilder and I've proposed static linking
pthread by default.
https://github.com/pure-data/pd-lib-builder/issues/42https://github.com/pure-data/pd-lib-builder/issues/36
My motivation on doing such thing is to prevent people from forgetting
to ship libwinpthread-1.dll when needed.
There are many chances for this to happen as when we test an compiled
[external] it will be working with Pd's libwinpthread-1.dll so we might
think that everything is OK. Also people from linux & osx are not really
aware that on Windows/MinGW pthread is an specific file.
This in turn will let the [external] survive when Pd, in some future,
will start using a future MinGW pthread implementation.
We discussed this but IOhannes & Dan see static linking as something
horrible.
I see that there's no difference in shipping the file or statically
include it in the [external].
I also tested that [externals] that don't use pthread are immune to the
-static flag.
Is there something I'm missing?
Why not putting a "lifebuoy" by default ?
If a dev does not want -static he/she can override it.
Some thoughts?
community ?
I ask this because I care about Windows Pd and [externals].
--
Mensaje telepatico asistido por maquinas.
Hi,
As IOhannes pointed it in this Github pull request (
https://github.com/pure-data/pure-data/pull/81), the FFT functions in
d_fft_fftsg.c are not thread-safe. An easy fix would be to set the static
variables TLS (*PERTHREAD*). (It doesn't solve the "size problem" of the
original pull request but it can be complementary). If it seems good for
you, I will add this to the pull request dedicated to the
multi-instance/multithreading problems on Github (
https://github.com/pure-data/pure-data/pull/288).
Another solution would be to integrate these static variables in the pd
instance structure (and to allocate the memory for each instance)?
Nevertheless, this second solution would add some code pretty useless if
someone use the FFTW wrapper. But is anybody using the FFTW wrapper
(d_fft_fftw.c)? If this second solution seems more suitable, I can create a
new pull request.
Cheers,
Pierre
CFLAGS works fine via make CFLAGS="-O0 -g" as CFLAGS propagate into CXXFLAGS, as I would expect.
I think it was a PEBKAC issue where I was probably misspelling CFLAGS as CLFAGS, was rushed, and didn't notice.
> this seems to be related to the confusion of CFLAGS, CPPFLAGS and CXXFLAGS.
> - CPPFLAGS flags for the C PreProcessor (and C++ and objective C/C++
> preprocessors)
> - CFLAGS flags for the C compiler
> - CXXFLAGS flags for the C++ compiler
>
> since abl_link~ is a C++-external, the CFLAGS don't have any effect and
> you should use CXXFLAGS instead.
>
> gmasdr
> IOhannes
--------
Dan Wilcox
@danomatika <http://twitter.com/danomatika>
danomatika.com <http://danomatika.com/>
robotcowboy.com <http://robotcowboy.com/>
I was trying to make a quick test build of an external which uses pdlibbuilder (abl_link~) and wanted to simply disable optimizations and enable debug symbol generation.
I tried a simple CFLAG override but it didn't seem to work:
make CFLAGS="-O0 -g"
How do override work with pdlibbuilder? Usually, I would expect this to at least append "-O0 -g" to the end of the computed CFLAGS.
--------
Dan Wilcox
@danomatika <http://twitter.com/danomatika>
danomatika.com <http://danomatika.com/>
robotcowboy.com <http://robotcowboy.com/>
Hi,
The objects [key], [keyup] and [keyname] can't be used in a multi-instance
context. The are bound to **static** symbols generated in the setup()
methods so it breaks the multi-instance support. I added a commit to fix
this on this Github PR: https://github.com/pure-data/pure-data/pull/288.The
PR already integrated the fix for the stack count issue. I hope it's fine
for you if I make all my multi-instance and multi-thread corrections in
this issue, otherwise I can split everything in separate PR.
Cheers,
Pierre