pure-lang-users Mailing List for Pure (Page 54)
Status: Beta
Brought to you by:
agraef
You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
(31) |
May
(422) |
Jun
(241) |
Jul
(268) |
Aug
(281) |
Sep
(109) |
Oct
(1) |
Nov
|
Dec
|
---|
From: Albert G. <Dr....@t-...> - 2008-04-30 19:32:26
|
Libor Spacek wrote: > Looking at the early posts here, it seems that the LLVM compilation might > become a stumbling block to a wider adoption. Yes, if you take a look at the q-lang-users archive, you'll see that we actually discussed the problem of having such a huge dependency quite a while ago, when the idea to target LLVM first came up. But give it some time, and LLVM should be readily available as a binary package on most Linux distros. > In my case, the SVN LLVM actually compiled on my AMD64 Ubuntu 8.04 but it > was the front end that failed and there are no binaries available for it :( I'm not sure whether the frontend is actually needed, Pure only links against the LLVM libraries AFAICT. > I will get some more time on Thursday to pick up courage and look at it again. Great, maybe you can give it a try with the little guide I just posted. If that doesn't work then Eddie Rucker should be able to help, he already has it up and running on Ubuntu IIRC. Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 19:19:45
|
Eddie Rucker wrote: > Tonight, I'm going to install the 64 bit Ubuntu again (I already have a CD) and see if I can get LLVM to work. I should probably go ahead and switch to FreeBSD, as I will later, but I'm too busy to install it. IIRC, FreeBSD wasn't as easy to install. If it works I'll give the step-by-step. That would be great! I'll add your notes to the README and will also make them available on The Pure website. In fact, I now seem to recall that the install wasn't all that difficult, it's just the documentation on the LLVM website which is confusing. I actually followed the "Building the LLVM GCC Front-End" page (http://llvm.org/docs/GCCFEBuildInstrs.html) rather than the "Getting Started" guide, which is much shorter (you'll have to fiddle with some of the options, though, because that page actually talks about building the Ada frontend). So IIRC this is the procedure I followed (please, someone should verify these steps, as it's been a while since I've done this): *Step#1:* Unpack the sources from both llvm-2.2.tar.gz and llvm-gcc4.2-2.2.source.tar.gz to some directory SRCDIR and go there (cd SRCDIR). You can find the downloads here: http://llvm.org/releases/download.html#2.2 (Just ignore all the binary packages and get only those two source tarballs.) *Step#2:* Rename the source directories: mv llvm-2.2 llvm mv llvm-gcc4.2-2.2.source llvm-gcc-4.2 *Step#3:* Make a build directory llvm-objects for llvm and go there: mkdir llvm-objects cd llvm-objects *Step#4:* Configure, build and install LLVM (set prefix to wherever you want it to, and use ENABLE_OPTIMIZED=0 instead of ENABLE_OPTIMIZED=1 to build LLVM with checking enabled): ../llvm/configure --prefix=/usr/local make ENABLE_OPTIMIZED=1 sudo make install *Step#5:* Make a build directory llvm-gcc-4.2-objects for llvm-gcc and go there: cd .. mkdir llvm-gcc-4.2-objects cd llvm-gcc-4.2-objects *Step#6:* Configure, build and install llvm-gcc (you might wish to add other languages like ada and fortran to the --enable-languages option): ../llvm-gcc-4.2/configure --prefix=/usr/local --enable-languages=c,c++ \ --enable-checking --enable-llvm=$PWD/../llvm-objects --disable-shared \ --disable-bootstrap --disable-multilib make sudo make install That should be all, IIRC. I'm not sure whether you actually have to install llvm-gcc (steps 5 and 6) if you only want to compile another LLVM application, but those are the steps I followed on both my development box (SUSE 10.1) and my laptop (SUSE 10.3), and it allows me to build Pure just fine. HTH, Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 18:43:00
|
Tim Haynes wrote: > Excellent. I'm further on - diff attached - but not quite home and dry just > yet: > > | zsh, sauce 1:59AM trunk/ % make > | g++ -g -Wall `llvm-config --cppflags` -c -o runtime.o runtime.cc > | g++ -g -Wall `llvm-config --cppflags` -c -o symtable.o symtable.cc > | g++ -g -Wall `llvm-config --cppflags` -c -o util.o util.cc > | flex -o lexer.cc lexer.ll > | lexer.ll:610: unrecognized rule > | lexer.ll:610: unrecognized rule > | lexer.ll:610: unrecognized rule > (repeat *lots). That's the same bug with recent Flex versions already reported by others. Should be fixed now. Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 18:20:17
|
Albert Graef wrote: > Ryan Schmidt wrote: >> I tried building on Mac OS X 10.4.11 PPC and got this: >> >> Command output: make: *** No rule to make target `/usr/local/include/ >> llvm/DerivedTypes.h', needed by `expr.o'. Stop. > > Hmm yes, the distributed Makefile shouldn't have all those LLVM > dependencies, I'll fix that. Fixed. >> interpreter.cc:1325: error: no match for 'operator!=' in 'it != >> std::list<_Tp, _Alloc>::rend() [with _Tp = rule, _Alloc = >> std::allocator<rule>]()' > > I'll look at that tomorrow. I don't get that error here, maybe it's an > incompatibility in the STL. That's a bug in older GNU STL versions: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11729 I changed the reverse_const_iterator there to an ordinary reverse_iterator, that should fix it. Ryan, can you please check that the trunk from SVN compiles now? >> interpreter.cc:2243: warning: passing negative value 'INT' for >> argument 2 to 'static llvm::ConstantInt* llvm::ConstantInt::get(const >> llvm::Type*, uint64_t, bool)' > > Those are annoying but harmless. I don't get them. I added the appropriate cast to uint64_t, so that should be fixed now, too. >> interpreter.cc: In member function 'llvm::Value* interpreter::fbox >> (Env&, bool)': >> interpreter.cc:3269: warning: control reaches end of non-void function >> interpreter.cc: In member function 'llvm::Value* interpreter::fref >> (int32_t, uint8_t, bool)': >> interpreter.cc:3494: warning: control reaches end of non-void function > > I don't get these either, probably a bogus warning, but I'll have a look > at that, too. These warnings are certainly bogus, probably related to: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16558 You can just ignore these, and they should go away when you upgrade to a newer gcc version. Thanks for reporting, Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 17:53:18
|
Chris Double wrote: > On Wed, Apr 30, 2008 at 3:11 AM, Albert Graef <Dr....@t-...> wrote: >> > flex -o lexer.cc lexer.ll >> > lexer.ll:610: unrecognized rule >> >> Hmm, I don't have that over here, could be a version incomptability. >> Which flex version do you have? >> > > I get this error to with flex 2.5.33. What version are you using? Ok, this is fixed in SVN now. I also made the parser work with the latest bison (2.3). Unfortunately, that means that you might have to upgrade your bison, too, to at least 2.1a. That's because the latest versions of the C++ parser skeleton are totally incompatible with bison 2.1 and earlier. Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 17:48:26
|
Eddie Rucker wrote: > Check this out! > > Critical values of the student t-distribution from GSL: Great, congrats. So when can we expect the Pure GSL module? ;-) >> using "lib:libgsl"; >> extern double gsl_cdf_tdist_Pinv(double, double); >> extern double gsl_cdf_tdist_Qinv(double, double); >> let left, right = gsl_cdf_tdist_Pinv 0.05 12.0, gsl_cdf_tdist_Qinv > 0.05 12.0; >> left, right; > -1.78228755564932,1.78228755564932 > > Beautiful!!! I just dig it!!! Nice. It's *much* fun to do system programming with Pure. I really enjoyed doing the regex and printf/scanf stuff in system.pure. You can go as low as C, but it's just ... much nicer. ;-) Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Eddie R. <er...@bm...> - 2008-04-30 14:42:26
|
On Wed, 2008-04-30 at 00:10 +0100, Libor Spacek wrote: > In my case, the SVN LLVM actually compiled on my AMD64 Ubuntu 8.04 but it > was the front end that failed and there are no binaries available for it :( > What I find difficult is not so much the process itself > but the uncertainties arising from the many comnbinations of configure and make options. > The instructions on LLVM site are not clear and often say "try this option" > or "try that option". Tonight, I'm going to install the 64 bit Ubuntu again (I already have a CD) and see if I can get LLVM to work. I should probably go ahead and switch to FreeBSD, as I will later, but I'm too busy to install it. IIRC, FreeBSD wasn't as easy to install. If it works I'll give the step-by-step. Eddie |
From: Albert G. <Dr....@t-...> - 2008-04-30 00:38:01
|
Tim Haynes wrote: > Hi - I'm here too ;) Great, welcome, get yourself a drink. :) > | runtime.cc: In function 'pure_expr* pure_intval(pure_expr*)': > | runtime.cc:678: error: cast from 'void*' to 'uint32_t' loses precision > | runtime.cc: In function 'pure_expr* pointer_to_bigint(void*)': > | runtime.cc:728: error: cast from 'void*' to 'uint32_t' loses precision > | runtime.cc:733: error: cast from 'void*' to 'uint32_t' loses precision Yeah, those casts to 32 bit are intended, but apparently you're not allowed to cast from a 64 bit pointer to uint32_t directly. Could you please try whether (uint32_t)(uint64_t) works? Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 00:29:39
|
Chris Double wrote: > I get this error to with flex 2.5.33. What version are you using? 2.5.31 on my main development box. But I can reproduce this on my laptop which has 2.5.33, will fix it asap. Thanks for reporting. For the time being, please use the tarball which has the lexer.cc file, the 0.1 sources are the same as the trunk currently. Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 00:16:00
|
Ryan Schmidt wrote: > I tried building on Mac OS X 10.4.11 PPC and got this: > > Command output: make: *** No rule to make target `/usr/local/include/ > llvm/DerivedTypes.h', needed by `expr.o'. Stop. Hmm yes, the distributed Makefile shouldn't have all those LLVM dependencies, I'll fix that. For the time being, just run 'make depend' before doing 'make', that should fix it. > interpreter.cc:1325: error: no match for 'operator!=' in 'it != > std::list<_Tp, _Alloc>::rend() [with _Tp = rule, _Alloc = > std::allocator<rule>]()' I'll look at that tomorrow. I don't get that error here, maybe it's an incompatibility in the STL. > interpreter.cc:2243: warning: passing negative value 'INT' for > argument 2 to 'static llvm::ConstantInt* llvm::ConstantInt::get(const > llvm::Type*, uint64_t, bool)' Those are annoying but harmless. I don't get them. What version of gcc did you use? > interpreter.cc: In member function 'llvm::Value* interpreter::fbox > (Env&, bool)': > interpreter.cc:3269: warning: control reaches end of non-void function > interpreter.cc: In member function 'llvm::Value* interpreter::fref > (int32_t, uint8_t, bool)': > interpreter.cc:3494: warning: control reaches end of non-void function I don't get these either, probably a bogus warning, but I'll have a look at that, too. Thanks, Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-30 00:08:37
|
Dear Sarino, (I'm cc'ing the mailing list since these questions have been asked a lot the past few days.) > I am a big fan of the Q language. I am most impressed with the spread sheet demonstration, and because of it, I have spent some time learning the language and the many libraries that come with it. Yeah, I really need to port the Qt3 interface and QCalc over to Pure asap. > how is it different from Q? Short answer: Execution speed, better C interface, and some useful new language features. Pure JIT-compiles to native code, and so programs run *much* (typically 20-30 times) faster than equivalent Q programs. Pure also has a direct C interface, so you can just call C functions from Pure, and soon it will also be possible to export Pure modules so that you can link them directly into other programs written in any language that can call C functions. Pure also uses term rewriting as its computational model, so it offers the same kind of flexibility and unrestricted polymorphism. But it also has local functions and lexical closures, which is something that Q users often asked for. I also took the opportunity to straighten out the syntax and get rid of the lexical distinction between function and variable symbols, and as a result the language is much prettier now (IMHO of course). The Pure interpreter was implemented from scratch in C++, so it's hopefully better designed and easier to maintain. It should also be ready for 64 bit systems, although I haven't tested that yet. Moreover, the interactive interpreter environment is much nicer, try it and see. The only thing that is still missing there is a symbolic debugger, but the necessary hooks are already there, so that should be easy to add. OTOH, Pure still lacks some of Q's features, most notably special forms, Wadler views, and the extensive system, graphics and multimedia library. So it's currently a bit experimental and not ready to replace Q just yet. But I'm working on that. ;-) > And what will happen to Q in the meantime? Well, the current Q codebase is fairly mature and isn't going anywhere. I'm still fixing bugs and keeping it up-to-date, and will continue to do so for the time being (or until someone else takes over). Pure might become the next Q, but it still has to prove itself. Everybody has been asking for a "compiled Q", and Pure attempts to be just that, only that the language got an (admittedly substantial) facelift, too. So let's see how the further development goes, and "give Pure a chance", ok? Cheers, Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Chris D. <chr...@do...> - 2008-04-29 23:24:43
|
On Wed, Apr 30, 2008 at 3:11 AM, Albert Graef <Dr....@t-...> wrote: > > flex -o lexer.cc lexer.ll > > lexer.ll:610: unrecognized rule > > Hmm, I don't have that over here, could be a version incomptability. > Which flex version do you have? > I get this error to with flex 2.5.33. What version are you using? Chris -- http://www.bluishcoder.co.nz |
From: Libor S. <li...@gm...> - 2008-04-29 23:10:54
|
Albert and Eddie, First, may I also congratulate you, Albert, on this release! I look forward to experiencing "pure joy" in future. I hereby join the virtual champagne party, prost! :) Thanks for your replies on q-lang-users, I am transferring that discussion to this new list now. Regards the speed, it is good to have some reserve "under the hood". Looking at the early posts here, it seems that the LLVM compilation might become a stumbling block to a wider adoption. I can see the value of LLVM, of course. Maybe the answer in the long run lies in providing a wider range of LLVM binaries for several architectures? In my case, the SVN LLVM actually compiled on my AMD64 Ubuntu 8.04 but it was the front end that failed and there are no binaries available for it :( What I find difficult is not so much the process itself but the uncertainties arising from the many comnbinations of configure and make options. The instructions on LLVM site are not clear and often say "try this option" or "try that option". I will get some more time on Thursday to pick up courage and look at it again. Until then, I will have to try to stop wishing that I could just run Pure "out of the box". Cheers, Libor |
From: Tim H. <q...@st...> - 2008-04-29 22:25:27
|
Hi - I'm here too ;) Trying to build on debian/testing/amd64. The official 0.1 release gives me this: | zsh, sauce 11:15PM pure-0.1/ % make | g++ -g -Wall `llvm-config --cppflags` -c -o runtime.o runtime.cc | runtime.cc: In function 'pure_expr* pure_intval(pure_expr*)': | runtime.cc:678: error: cast from 'void*' to 'uint32_t' loses precision | runtime.cc: In function 'pure_expr* pointer_to_bigint(void*)': | runtime.cc:728: error: cast from 'void*' to 'uint32_t' loses precision | runtime.cc:733: error: cast from 'void*' to 'uint32_t' loses precision | make: *** [runtime.o] Error 1 Seems the svn trunk does also, just takes a little while to get around to runtime.cc. Presumably this is a 64-bit issue that a void* isn't 32bits; I see lots of references to uint32_t in runtime.cc so I don't quite know what to tweak to fix it, if possible... FWIW: | zsh, sauce 11:15PM pure-0.1/ % g++ --version | g++ (GCC) 4.2.3 (Debian 4.2.3-3) Cheers, ~Tim -- <http://spodzone.org.uk/> |
From: Eddie R. <er...@bm...> - 2008-04-29 21:48:35
|
Check this out! Critical values of the student t-distribution from GSL: The first parameter of gsl_cdf_tdist_*inv is the probability and the second is the degrees of freedom. > using "lib:libgsl"; > extern double gsl_cdf_tdist_Pinv(double, double); > extern double gsl_cdf_tdist_Qinv(double, double); > let left, right = gsl_cdf_tdist_Pinv 0.05 12.0, gsl_cdf_tdist_Qinv 0.05 12.0; > left, right; -1.78228755564932,1.78228755564932 > Beautiful!!! I just dig it!!! Eddie |
From: Albert G. <Dr....@t-...> - 2008-04-29 21:28:37
|
Hi John, thanks for reporting. I'm forwarding this to the list so that maybe Ryan Schmidt can have a look at it, he's already working on a MacOS port of Pure for http://www.macports.org/. Greetings, Albert -------- Original Message -------- Subject: Pure Programming Langauge: Compile bugs on Mac OS X Date: Tue, 29 Apr 2008 16:50:22 +0100 From: John Lunney <lu...@tc...> To: Dr....@t-... Dear Albert, I downloaded your new Pure programming language release this morning when I saw it linked on Reddit. I have to say it looks very interesting! I was particularly intrigued by the use of LLVM, having studied Compiler Design in this my final year of university (Computer Science, Linguistics and French). I downloaded the tar-ball from the SourceForge page, and downloaded and installed LLVM, all on my Mac OS X 10.4.11 system. Unfortunately, I get some errors when I run "make": g++ -g -Wall `llvm-config --cppflags` -c -o expr.o expr.cc g++ -g -Wall `llvm-config --cppflags` -c -o interpreter.o interpreter.cc interpreter.cc: In member function ‘expr* interpreter::mkwhen_expr (expr*, rulel*)’: interpreter.cc:1325: error: no match for ‘operator!=’ in ‘it != std::list<_Tp, _Alloc>::rend() [with _Tp = rule, _Alloc = std::allocator<rule>]()’ interpreter.cc: In member function ‘llvm::Function* interpreter::declare_extern(std::string, std::string, const std::list<std::string, std::allocator<std::string> >&, bool, void*, std::string)’: interpreter.cc:2243: warning: passing negative value ‘INT’ for argument 2 to ‘static llvm::ConstantInt* llvm::ConstantInt::get(const llvm::Type*, uint64_t, bool)’ ... repeated about 10 times ... interpreter.cc: In member function ‘llvm::Value* interpreter::fbox (Env&, bool)’: interpreter.cc:3269: warning: control reaches end of non-void function interpreter.cc: In member function ‘llvm::Value* interpreter::fref (int32_t, uint8_t, bool)’: interpreter.cc:3494: warning: control reaches end of non-void function make: *** [interpreter.o] Error 1 I decided to try out the version from the SVN repository. With it, I get the following errors: g++ -g -Wall `llvm-config --cppflags` -c -o expr.o expr.cc bison -v -o parser.cc parser.yy g++ -g -Wall `llvm-config --cppflags` -c -o interpreter.o interpreter.cc /usr/local/include/llvm/CallingConv.h:26: error: expected identifier before numeric constant /usr/local/include/llvm/CallingConv.h:26: error: expected unqualified- id before numeric constant interpreter.cc: In member function ‘void interpreter::compile(expr)’: interpreter.cc:609: error: expected unqualified-id before numeric constant ... many hundreds of lines of errors ... interpreter.cc:2959: warning: control reaches end of non-void function interpreter.cc: In member function ‘llvm::Value* interpreter::fbox (Env&, bool)’: interpreter.cc:3269: warning: control reaches end of non-void function interpreter.cc: In member function ‘llvm::Value* interpreter::fref (int32_t, uint8_t, bool)’: interpreter.cc:3494: warning: control reaches end of non-void function make: *** [interpreter.o] Error 1 I hope this feedback will be of some use to you. Yours sincerely, John Lunney -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Albert G. <Dr....@t-...> - 2008-04-29 20:28:58
|
Eddie Rucker wrote: > Should BigInts be working? Yes sure! >> using "lib:libgmp"; You don't need that, the bigint arithmetic is already in the runtime and the prelude. (The 'using "lib:..."' thing is what you'd do if you wanted to *directly* call some other GMP functions from Pure.) >> fact 0 = 1; >> fact n = n * fact (n-1); If you start your calculation with machine ints, that's what you get. (That's different from Q, where you don't have any machine ints at all, every integer is a bigint there.) If you want bigint results in Pure, you *must* promote at least one operand to a bigint, e.g.: > fact 0 = bigint 1; fact n = n * fact (n-1); > fact 20; 2432902008176640000 See? It would be nice if you could just call your original definition with a bigint argument, e.g., fact (bigint 20). Unfortunately that doesn't work right now because the '0' in 'fact 0 = 1;' does *not* match a bigint zero. :( I'm working on that... Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Eddie R. <er...@bm...> - 2008-04-29 17:59:33
|
Hi Albert, Should BigInts be working? From the manual: The Pure language provides built-in support for machine integers (32 bit), bigints (implemented using GMP), But, > using "lib:libgmp"; > fact 0 = 1; > fact n = n * fact (n-1); > fact 20; -2102132736 > Eddie |
From: Albert G. <Dr....@t-...> - 2008-04-29 14:57:57
|
Hi Eddie, > There is no file lexer.cc in subversion. No, that's right, it's a generated file, you don't usually put these into source code repositories. But you can find it in the pure-0.1 tarball on the project page. > flex -o lexer.cc lexer.ll > lexer.ll:610: unrecognized rule Hmm, I don't have that over here, could be a version incomptability. Which flex version do you have? Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Eddie R. <er...@bm...> - 2008-04-29 14:06:59
|
Ok, got the tarball and it compiles and works. Thanks! Cannot wait till I get a chance to play with it. Eddie On Tue, 2008-04-29 at 08:22 -0500, Eddie Rucker wrote: > Hi Albert, > > There is no file lexer.cc in subversion. > > flex -o lexer.cc lexer.ll > lexer.ll:610: unrecognized rule > > Eddie > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone > _______________________________________________ > Pure-lang-users mailing list > Pur...@li... > https://lists.sourceforge.net/lists/listinfo/pure-lang-users |
From: Albert G. <Dr....@t-...> - 2008-04-29 13:41:15
|
(Crossposted to q-lang-users and faudiostream-devel.) (Yann, I hope that it's ok to crosspost to the Faust list? I think that at least some Faust programmers may be interested in this, too.) For the impatient: Pure (a.k.a. the "Pure Universal Rewriting Engine", slated to become Q's successor) has been released. For downloads and info see http://pure-lang.sf.net. For the not-so-impatient: ** Pure 0.1 2008-04-29 Release 0.1 of Pure is now available. Like Q, Pure is a modern-style FPL based on term rewriting, which is slated to eventually become Q's much improved successor. Pure offers many new and powerful features (most notably: local functions, block structure, lexical closures, incremental compilation, direct C interface, and a much improved interpreter environment) and a completely new and cleaner design and C++-based implementation. Compared to Q, Pure programs also run *much* faster (typically by a factor of at least 20-30). That's because the Pure interpreter has an LLVM backend (http://llvm.org) which compiles Pure scripts to native code on the fly. The code generated by the current interpreter is already fairly good -- on the "recursive" benchmark of the "Language Shootout" it has a performance factor of about 34 (measured against gcc -O3) which puts it in about the same league as MZScheme. This is the much-awaited initial release. ;-) The interpreter is already fully functional, but of course there's still a lot to be done (see the TODO file for details). Please note that this is a preliminary, "beta" release, so expect some bugs (and please report them!). The Pure project is hosted by SourceForge, see http://pure-lang.sf.net for more information and downloads. A mailing list for discussing Pure is now available there, too. You'll need LLVM to compile and run the interpreter (LLVM 2.2 has been tested). Please see the INSTALLATION section in the README file in the sources to get up and running quickly. After Pure is installed, read the Pure manual page (also available in various formats from the Pure website) and have a look at the stuff in the examples subdir, especially hello.pure, and at the standard library modules (lib/*.pure). Enjoy! :) Albert -- Dr. Albert Gr"af Dept. of Music-Informatics, University of Mainz, Germany Email: Dr....@t-..., ag...@mu... WWW: http://www.musikinformatik.uni-mainz.de/ag |
From: Eddie R. <er...@bm...> - 2008-04-29 13:23:14
|
Hi Albert, There is no file lexer.cc in subversion. flex -o lexer.cc lexer.ll lexer.ll:610: unrecognized rule Eddie |