Thread: [pure-lang-users] ANN: Pure 0.6 released
Status: Beta
Brought to you by:
agraef
|
From: Albert G. <Dr....@t-...> - 2008-09-12 00:54:00
|
The most important additions in this release are the support for macros and lazy evaluation. The Windows package now includes PurePad, a little GUI frontend which makes editing and running Pure scripts on Windows a bit more convenient. (This is just a quick hack of Qpad to make it work with Pure.) Downloads and release notes can be found here: http://sourceforge.net/project/showfiles.php?group_id=226193 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: Libor S. <li...@gm...> - 2008-09-12 16:40:42
|
Congratulations, it even installs and runs easily on my 64bit Windoze Vista. This is progress indeed, well done! Libor On Fri, 12 Sep 2008 01:56:40 +0100, Albert Graef <Dr....@t-...> wrote: > The most important additions in this release are the support for macros > and lazy evaluation. The Windows package now includes PurePad, a little > GUI frontend which makes editing and running Pure scripts on Windows a > bit more convenient. (This is just a quick hack of Qpad to make it work > with Pure.) > > Downloads and release notes can be found here: > http://sourceforge.net/project/showfiles.php?group_id=226193 > > Enjoy. :) > Albert > |
|
From: Albert G. <Dr....@t-...> - 2008-09-12 20:22:22
|
Hi Libor, and welcome back! Libor Spacek wrote: > Congratulations, it even installs and runs easily on my 64bit Windoze Vista. Thanks for the info, nice to know that it works on 64 bit Windows, too. Note that the Windows binary is actually 32 bit, but that shouldn't make much of a difference as far as Pure is concerned (except for the range of pointer values, of course). Also note that you can readily implement 'timex' as a macro now, in fact that example is discussed in the new macros section in the manual. > This is progress indeed, well done! Thanks. :) In fact I'm quite pleased with how quickly Pure has gone from a proof of concept to an almost complete base system. LLVM has proved to be rather nice to work with, and I'm confident now that it was the right decision to retire the slow Q interpreter and its aging codebase, and start from scratch. Just for the record, here's my current roadmap: 0.7: GSL vector and matrix support. Started working on that today, expect to finish it still in September. 0.8: Multithreading support. Not sure how long that will take, as I haven't really decided about the concurrency model and the base libraries (pthreads? OpenMP?) yet. At that point we'll have a pretty solid and complete base system and work can start on the library interfaces. Only the blue sky will be the limit then. :) 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: John C. <co...@cc...> - 2008-09-12 20:38:06
|
Albert Graef scripsit: > 0.8: Multithreading support. Not sure how long that will take, as I > haven't really decided about the concurrency model and the base > libraries (pthreads? OpenMP?) yet. Please give us something more disciplined than (p)threads, which are nothing but an invitation to make a mess of a concurrent program. (This assumes that you have already introduced state; threads are fine without mutable state.) I'd prefer fork/join/pipe semantics like Unix processes myself, since they are already known to distribute well over multiple cores and multiple machines, but I can live with any reasonable discipline. -- John Cowan http://ccil.org/~cowan co...@cc... Economists were put on this planet to make astrologers look good. --Leo McGarry |
|
From: Albert G. <Dr....@t-...> - 2008-09-13 07:24:10
|
John Cowan wrote: > Please give us something more disciplined than (p)threads, which are > nothing but an invitation to make a mess of a concurrent program. When I talk about pthreads an OpenMP, that's just the implementation. The concurrency model presented to the Pure programmer will be something entirely different. I'm not going to repeat the mistakes I did with Q. ;-) > (This assumes that you have already introduced state; threads are fine > without mutable state.) I'd prefer fork/join/pipe semantics like Unix > processes myself, since they are already known to distribute well over > multiple cores and multiple machines, but I can live with any reasonable > discipline. So far, I've been looking at the following models which are known to work well in FPLs: Linda (or rather a variation called "concurrent tree bags" being used in Aardappel), Erlang-style message passing (but without the copying, which will need some special provisions in order to get safe but lockless reference counting) and concurrent futures a la Alice ML. The latter is especially attractive because it unifies concurrency and the lazy futures which Pure already has, but it lacks the message passing aspect. I think that a combination of concurrent futures with message passing would be nice to have, and this should be pretty close to the fork/join/pipe model you have in mind. This will still require some kind of synchronization for the impure stuff in the library (references, sentries and direct C pointer manipulation, as well as eval/str), but this can be handled behind the scenes. In any case I want to make sure that purely functional code will never need any kind of mutex locking. Lockless synchronization might also work for some of the impure features. Of course, the message passing channels themselves also need some kind of protection, but if possible I will also use a lockfree data structure there. I'm open to suggestions, so if you know about any other concurrency models and/or implementation tricks that might be interesting in this context, please let me know. 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: Albert G. <Dr....@t-...> - 2008-09-13 11:39:38
|
I wrote: > [...] Erlang-style message passing (but > without the copying, which will need some special provisions in order to > get safe but lockless reference counting) Well, I should add here that I'd like to avoid copying in the message passing because of efficiency considerations, and because this allows the passing of function objects (including thunks, and therefore lazy data structures). But I still consider the copying option because it makes things so much easier. Not sharing any data between threads except the message queues and the thread handles has the chief advantage that almost all tricky synchronization issues just go away, and it's easier to make this work across the network, too. So I'll certainly take a look at how the Erlang people have done this. 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: John L. <joh...@gm...> - 2008-09-18 11:05:52
|
Hi Albert, Just a very small problem! I downloaded and tested the Windows installer package here in work. On the machine where I've given myself Administrator privileges, it installs fine. On the machine where I'm a normal user, it doesn't have permission to edit the global environmental variables, so there's an error. When you open PurePad then, obviously it can only look in the current directory for the prelude etc. I presume there are user-level environmental variables in Windows? (It's far from my primary platform) I guess there are a few ways round this: 1. Require Administrator access to install 2. Automatically choose whether to edit the global or user variables depending on who is running the installer 3. Allow a "For all users" or "For this user" install, and act appropriately. Hope this helps, John On Fri, Sep 12, 2008 at 1:56 AM, Albert Graef <Dr....@t-...> wrote: > The most important additions in this release are the support for macros > and lazy evaluation. The Windows package now includes PurePad, a little > GUI frontend which makes editing and running Pure scripts on Windows a > bit more convenient. (This is just a quick hack of Qpad to make it work > with Pure.) > > Downloads and release notes can be found here: > http://sourceforge.net/project/showfiles.php?group_id=226193 > > Enjoy. :) > Albert |
|
From: Albert G. <Dr....@t-...> - 2008-09-18 14:34:01
|
John Lunney wrote: > On the machine where I'm a normal user, it doesn't have permission to > edit the global environmental variables, so there's an error. Unfortunately the freeware MSI builder I'm using (AdvancedInstaller, which is the only half-decent freeware GUI-based MSI builder that I could find) doesn't provide many configuration options there. AFAICT, the MSI must be configured for either single-user or admin installation, and the environment variables to edit must then be set up accordingly. I see no way to tweak the MSI configuration in a more intelligent way, or based on user interaction. The full AdvancedInstaller software presumably has all those features, but I'm not going to shell out any money just to build a stupid MSI. > I presume there are user-level environmental variables in Windows? Yes, actually the MSI was set up to edit the user environment up to Pure 0.5, but that caused other issues, as reported by Rob Hubbard. So I changed it to use the system variables instead, which is more convenient if you want to do an admin install for all users and then go on to work from an ordinary user account. I thought that AdvancedInstaller would be clever enough to find a way to make that work with a user install, too, but obviously that was too optimistic. ;-) > I guess there are a few ways round this: > 1. Require Administrator access to install > 2. Automatically choose whether to edit the global or user variables > depending on who is running the installer > 3. Allow a "For all users" or "For this user" install, and act appropriately. Well, the only option that the AdvancedInstaller freeware seems to offer is #1, so I'm going to fix the MSI accordingly for the next release. That will no doubt raise many complaints about not being to able to install Pure as non-admin, but then so be it. > Hope this helps, Yes, thanks for reporting the issue. :) 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 |