-AlexHit me up if you're around.I'll be on IRC [#dataflow] as "xnor" tomorrow between around 10am and around 5pm Pacific Standard Time [west coast USA] tomorrow, on an osx machine.okay, dang. seems cmake isn't making the compiler use the c++11 standard. I believe it should be with the settings I gave but I'm no CMake pro.Either way, we should be able to get it to use c++11.
I wonder what happens if you run: CXX=clang++ makeOn Sun, Mar 18, 2018 at 4:52 PM, Marco Matteo Markidis <mm.markidis@gmail.com> wrote:(probably) last mail of the night :)I update the llvm to 5.0 and add the cxx flags for include flex header and m_pd.h. Anyway, something goes wrong...MMMarkidis:jit_expr dis$ make
[ 7%] Building CXX object src/parse/CMakeFiles/parse.dir
/scanner.cc.o In file included from scan.ll:4:
In file included from parse.yy:12:
In file included from /Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/driver. hh:9: /Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no type26:18: named 'shared_ptr' in namespace 'std'
typedef std::shared_ptr<Node> NodePtr;
~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:26:28: expected unqualified-id
typedef std::shared_ptr<Node> NodePtr;
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no type27:18: named 'shared_ptr' in namespace 'std'
typedef std::shared_ptr<Variable> VariablePtr;
~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:27:28: expected unqualified-id
typedef std::shared_ptr<Variable> VariablePtr;
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no type28:18: named 'shared_ptr' in namespace 'std'
typedef std::shared_ptr<SampleAccess> SampleAccessPtr;
~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:28:28: expected unqualified-id
typedef std::shared_ptr<SampleAccess> SampleAccessPtr;
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no type29:18: named 'shared_ptr' in namespace 'std'
typedef std::shared_ptr<ArrayAccess> ArrayAccessPtr;
~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:29:28: expected unqualified-id
typedef std::shared_ptr<ArrayAccess> ArrayAccessPtr;
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no type30:18: named 'shared_ptr' in namespace 'std'
typedef std::shared_ptr<Deref> DerefPtr;
~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:30:28: expected unqualified-id
typedef std::shared_ptr<Deref> DerefPtr;
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no type31:18: named 'function' in namespace 'std'
typedef std::function<void(std::string v, unsigned int depth)> PrintFunc;
~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:31:26: expected unqualified-id
typedef std::function<void(std::string v, unsigned int depth)> PrintFunc;
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no33:36: member named 'VariablePtr' in namespace 'xnor::ast'
typedef std::vector<xnor::ast::Variabl
ePtr> VariableVector; ~~~~~~~~~~~^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:112:16: unknown type name 'VariablePtr'; did you mean 'Variable'?
Quoted(VariablePtr var);
^~~~~~~~~~~
Variable
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: note:75:11: 'Variable' declared here
class Variable : public VNode<Variable> {
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:116:9: unknown type name 'VariablePtr'; did you mean 'Variable'?
VariablePtr variable() const { return mQuotedVar; }
^~~~~~~~~~~
Variable
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: note:75:11: 'Variable' declared here
class Variable : public VNode<Variable> {
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:119:9: unknown type name 'VariablePtr'; did you mean 'Variable'?
VariablePtr mQuotedVar = nullptr;
^~~~~~~~~~~
Variable
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: note:75:11: 'Variable' declared here
class Variable : public VNode<Variable> {
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error: no119:34: viable conversion from 'nullptr_t' to 'xnor::ast::Variable'
VariablePtr mQuotedVar = nullptr;
^~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: note:75:11: candidate constructor (the implicit copy constructor) not viable: no known
conversion from 'nullptr_t' to 'const xnor::ast::Variable &' for 1st
argument
class Variable : public VNode<Variable> {
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: note:85:9: candidate constructor not viable: no known conversion from 'nullptr_t' to
'const std::string &' (aka 'const basic_string<char> &') for 1st argument
Variable(const std::string& n);
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:129:24: unknown type name 'NodePtr'
UnaryOp(Op op, NodePtr node);
^
/Users/dis/Documents/Pd/extern
als/jit_expr/src/parse/ast.h: error:132:9: unknown type name 'NodePtr'
NodePtr node() const { return mNode; }
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[3]: *** [src/parse/CMakeFiles/parse.di
r/scanner.cc.o] Error 1 make[2]: *** [src/parse/CMakeFiles/parse.di
r/all] Error 2 make[1]: *** [all] Error 2
make: *** [pd] Error 2
2018-03-18 23:38 GMT+01:00 Marco Matteo Markidis <mm.markidis@gmail.com>:I managed to add llvm but compilation fails.MMMarkidis:jit_expr dis$ make
[ 7%] [FLEX][Scanner] Building scanner with flex 2.6.4
[ 15%] [BISON][Parser] Building parser with bison 3.0.4
Scanning dependencies of target parse
[ 23%] Building CXX object src/parse/CMakeFiles/parse.dir
/scanner.cc.o /Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:772:8: member reference type 'std::istream *' (aka 'basic_istream<char> *') is a
pointer; maybe you meant to use '->'?
yyin.rdbuf(std::cin.rdbuf());
~~~~^
->
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:779:9: member reference type 'std::ostream *' (aka 'basic_ostream<char> *') is a
pointer; maybe you meant to use '->'?
yyout.rdbuf(std::cout.rdbuf())
; ~~~~~^
->
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1112:50: member reference type 'std::istream *' (aka 'basic_istream<char> *') is a
pointer; maybe you meant to use '->'?
YY_CURRENT_BUFFER_LVALUE->yy_i
nput_file = yyin.rdbuf(); ~~~~^
->
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1232:2: cannot initialize a member subobject of type 'std::istream *' (aka
'basic_istream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyin(arg_yyin ? arg_yyin->rdbuf() : std::cin.rdbuf()),
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~ /Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1233:2: cannot initialize a member subobject of type 'std::ostream *' (aka
'basic_ostream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyout(arg_yyout ? arg_yyout->rdbuf() : std::cout.rdbuf())
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~ /Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1235:2: use of undeclared identifier 'ctor_common'
ctor_common();
^
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1240:14: out-of-line definition of 'parseFlexLexer' does not match any declaration
in 'parseFlexLexer'
yyFlexLexer::yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout ):
^~~~~~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s note:canner.cc:30:25: expanded from macro 'yyFlexLexer'
#define yyFlexLexer parseFlexLexer
^~~~~~~~~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s note:canner.cc:1231:27: type of 1st parameter of member declaration does not match definition
('std::istream *' (aka 'basic_istream<char> *') vs 'std::istream &' (aka
'basic_istream<char> &'))
yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ):
^
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1241:2: cannot initialize a member subobject of type 'std::istream *' (aka
'basic_istream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyin(arg_yyin.rdbuf()),
^ ~~~~~~~~~~~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1242:2: cannot initialize a member subobject of type 'std::ostream *' (aka
'basic_ostream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyout(arg_yyout.rdbuf())
^ ~~~~~~~~~~~~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1244:2: use of undeclared identifier 'ctor_common'
ctor_common();
^
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1249:19: out-of-line definition of 'ctor_common' does not match any declaration in
'parseFlexLexer'
void yyFlexLexer::ctor_common()
^~~~~~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1287:19: out-of-line definition of 'switch_streams' does not match any declaration
in 'parseFlexLexer'
void yyFlexLexer::switch_streams( std::istream& new_in, std::ostream& new_out )
^~~~~~~~~~~~~~
/Applications/Xcode.app/Conten
ts/Developer/Toolchains/XcodeD note:efault.xctoolchain/usr/include /FlexLexer.h:129:31: type of 1st parameter of member declaration does not match definition
('std::istream *' (aka 'basic_istream<char> *') vs 'std::istream &' (aka
'basic_istream<char> &'))
virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ...
^
/Applications/Xcode.app/Conten
ts/Developer/Toolchains/XcodeD note:efault.xctoolchain/usr/include /FlexLexer.h:53:22: expanded from macro 'FLEX_STD'
# define FLEX_STD std::
^
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1291:41: no viable conversion from 'std::istream' (aka 'basic_istream<char>') to
'std::istream *' (aka 'basic_istream<char> *')
yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE ) );
^~~~~~
/Applications/Xcode.app/Conten
ts/Developer/Toolchains/XcodeD note:efault.xctoolchain/usr/include /FlexLexer.h:121:62: passing argument to parameter 's' here
struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size );
^
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1294:7: member reference type 'std::ostream *' (aka 'basic_ostream<char> *') is a
pointer; maybe you meant to use '->'?
yyout.rdbuf(new_out.rdbuf());
~~~~~^
->
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1302:10: assigning to 'std::istream *' (aka 'basic_istream<char> *') from
incompatible type 'std::istream **' (aka 'basic_istream<char> **'); remove
&
new_in = &yyin;
^ ~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1306:11: assigning to 'std::ostream *' (aka 'basic_ostream<char> *') from
incompatible type 'std::ostream **' (aka 'basic_ostream<char> **'); remove
&
new_out = &yyout;
^ ~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1315:18: out-of-line definition of 'LexerInput' does not match any declaration in
'parseFlexLexer'
int yyFlexLexer::LexerInput( char* buf, int max_size )
^~~~~~~~~~
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1318:11: member reference type 'std::istream *' (aka 'basic_istream<char> *') is a
pointer; maybe you meant to use '->'?
if ( yyin.eof() || yyin.fail() )
~~~~^
->
/Users/dis/Documents/Pd/extern
als/jit_expr/build/src/parse/s error:canner.cc:1318:25: member reference type 'std::istream *' (aka 'basic_istream<char> *') is a
pointer; maybe you meant to use '->'?
if ( yyin.eof() || yyin.fail() )
~~~~^
->
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[3]: *** [src/parse/CMakeFiles/parse.di
r/scanner.cc.o] Error 1 make[2]: *** [src/parse/CMakeFiles/parse.di
r/all] Error 2 make[1]: *** [all] Error 2
make: *** [pd] Error 2
2018-03-18 22:49 GMT+01:00 Marco Matteo Markidis <mm.markidis@gmail.com>:Hi Alex,jit_expr.pd_darwin is in the same folder of help file. Usually it works...On my machine, Deken puts the externals in Pd/externals and in my path I have Pd/externals.Anyway, putting all stuff in verbose I get in console:/Users/dis/Documents/Pd/externals/jit_expr/jit_expr.pd_darwi n: dlopen(/Users/dis/Documents/Pd /externals/jit_expr/jit_expr.p d_darwin, 10): Symbol not found: _futimens Referenced from: /Users/dis/Documents/Pd/externals/jit_expr/jit_expr.pd_darwi n (which was built for Mac OS X 10.13) Expected in: /usr/lib/libSystem.B.dylibin /Users/dis/Documents/Pd/externals/jit_expr/jit_expr.pd_darwi n So there is futimens function that is not found; indeed looking at symbols present in my /usr/lib/libSystem.B.dylib futimens is not present. So I suspect that passing from OSX 10.10.5 (my os) to OSX 10.13 (the one you use to compile) something changes.Finally, I tried to compile jit_expr. However Cmake 3.10.2 does not find LLVMConfig.cmake or llvm-config.cmake. I have several llvm installed on my machine with macports, but even using find command I do not find manually any of these two files.Best,MarcoPs. I found a LLVM-Config.cmake but I don't know how to add this path or set a LLVM_DIR.2018-03-18 19:22 GMT+01:00 Alex <x37v.alex@gmail.com>:File -> preferences -> pathCan you tell me what is in your "path" settings, on mac the "file" menu item might be just called "Pd"? I'm not sure [I'm on a linux machine right now]Hi Marco,HMM, where did you install jit_expr.pd_darwin ? Deken initially sets up a directory for you if you tell it to, I believe. I think on mac this is in ~/Documents/Pd/extra ?-AlexOn Sun, Mar 18, 2018 at 10:10 AM, Marco Matteo Markidis <mm.markidis@gmail.com> wrote:Sorry,I forgot to let you know all the important informations.Pd vanilla 48.1 64 bit, OSX, downloaded from deken binaries and sources. help file doesn't work opening from pd browser and directly double-clicking.I tried even copy pd.lib in the same folder of help & pd.darwin, but without success.2018-03-18 18:04 GMT+01:00 Alex <x37v.alex@gmail.com>:-AlexDoes the jit_expr help file work if you open it in the pd browser? help -> browse -> jit_expr -> double click on the jit_expr-help.pd file?Hi Marco,Which version of PD are you running? Which OS? I expect you downloaded jit_expr from deken?
On Sun, Mar 18, 2018 at 9:49 AM, Marco Matteo Markidis <mm.markidis@gmail.com> wrote:Dear Alex,very happy about this new feature... and incredibly very happy about hearing just-in-time compiling dsp graph!Anyway, I get only various jit/expr, jit/expr~, jit/fexpr~ couldn't create...I tried to change the [declare -lib] in [declare -path], jit_expr in jit/expr in declare, looking to have the right 64 bit pd but nothing...Best,Marco--2018-03-18 17:34 GMT+01:00 Alex <x37v.alex@gmail.com>:Alexandre,I don't think it has had enough usage to be called "stable" yet, but I could see that happening down the line. In fact, I could see eventually JIT compiling the entire DSP graph.. but of course that would be significant work. At this point I just need more people to try it out and make sure it would be up to it.-AlexOn Sun, Mar 18, 2018 at 9:23 AM, Alexandre Torres Porres <porres@gmail.com> wrote:if this is stable, wouldn't it be a nice idea to propose it as an update to the expr~ family of objects? since it is basically an optimized clone?cheers2018-03-18 13:08 GMT-03:00 Alex <x37v.alex@gmail.com>:______________________________I'm not exactly sure how to profile pure data patches. If anyone has a good approach or original expr~/fexpr~ patches that use a lot of CPU you can share, let me know.I believe they are feature complete with the originals but I'd love to know if there is anything that I'm missing or any bugs that you discover.jit_expr is a clone of the pure data expr/expr~/fexpr~ objects. It just-in-time compiles its expressions so they should be much more optimized than the original. If all works as designed, they should use less CPU than the equivalent vanilla, non-expr, patching and have a significant CPU advantage over the original expr objects.I've put the external, compiled for 64-bit Mac-OS and 64-bit Linux, up on deken: in pd, go to help menu, find externals, search for "jit_expr".After installing the external you should be able to change any of your expr family of objects to just in time compile by loading the library, [declare -lib jit_expr], and then prefixing the object name with "jit/", for example [jit/fexpr~ $x1[0] + $y1[-1]].Compiling in the object takes a little bit of time, so the initial instantiation of the object/expression will be a bit slower than the original, FYI.BTW, if you're curious to see the llvm assembly produced by your expression, send the |print( message into the left most inlet of your object then check out the pd console.I would love help building Windows and 32-bit Linux versions of the externals. I'm guessing we could also do raspi/arm builds but we'd need some changes to the source code as it uses llvm and explicitly generates code for x86 right now.The source code can be found in the git repo:-Alex Norman_________________
Pd-announce mailing list
Pd-announce@lists.iem.at
https://lists.puredata.info/listinfo/pd-announce
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Ho cambiato l'indirizzo email in mm.markidis@autistici.org . Se non è un problema, scrivimi a questo nuovo indirizzo email.I changed my email address in mm.markidis@autistici.org . If it is ok for you, please write me to this new email address.
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
--Ho cambiato l'indirizzo email in mm.markidis@autistici.org . Se non è un problema, scrivimi a questo nuovo indirizzo email.I changed my email address in mm.markidis@autistici.org . If it is ok for you, please write me to this new email address.
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
--Ho cambiato l'indirizzo email in mm.markidis@autistici.org . Se non è un problema, scrivimi a questo nuovo indirizzo email.I changed my email address in mm.markidis@autistici.org . If it is ok for you, please write me to this new email address.--Ho cambiato l'indirizzo email in mm.markidis@autistici.org . Se non è un problema, scrivimi a questo nuovo indirizzo email.I changed my email address in mm.markidis@autistici.org . If it is ok for you, please write me to this new email address.--Ho cambiato l'indirizzo email in mm.markidis@autistici.org . Se non è un problema, scrivimi a questo nuovo indirizzo email.I changed my email address in mm.markidis@autistici.org . If it is ok for you, please write me to this new email address.
_______________________________________________
Pd-list@lists.iem.at mailing list
UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list