Murga-Projects Forums
MurgaLua 0.6.8 - Printable Version

+- Murga-Projects Forums (http://www.murga-projects.com/forum)
+-- Forum: Project Forums (/forumdisplay.php?fid=1)
+--- Forum: MurgaLua - General (/forumdisplay.php?fid=2)
+--- Thread: MurgaLua 0.6.8 (/showthread.php?tid=316)


MurgaLua 0.6.8 - JohnMurga - 04-14-2008 03:29 AM

Hi,

OK, this isn't the proper release as I haven't tested or updated the documentation or mikshaw's stuff ...
But at least it gives you a chance to try things out.

The binaries should stay as they are unless serious bugs are found.

Tests for the new and changed functionality can be found in the "examples/new" directory.

Windows users will find a full distribution of the luacom extension (for COM/ActiveX) compiled for murgaLua, along with documentation and a couple of examples I knocked up (like a simple task tray example someone was asking about some time back).

Please forgive the rough-and-readiness of this snapshot ...

A rough list of changes is as follows :
  • Fixed a couple of long standing bugs in debugging and timeout support.
  • And some other bugs ...
  • Improved the FLTK binding ... Idle callback support is available now.
  • Upgraded : FLTK (Bugfixes), LZO, LuaFilesys, lzlib ...
  • Fixed and integrated Alien to murgaLua, tested on platforns and requiring libffi.
    This will enable some pretty cool stuff in future :-)
  • Alien brings with it the struct extension too, which is pretty useful.
  • Heavily modified luasys and integrated some of it's features (including improved IO, serial support and others).
  • Added bitlib for better bitwise operations.
  • Added slncypto to provide improved cryto functionality.
  • Integrated LuaTask ...
    I was finally convinced to provided some form of threading.

I hope I didn't forget anything ...

You can find the full snapshot at :

http://www.murga-projects.com/files/

Cheers
JohnM


RE: MurgaLua 0.6.8 - mikshaw - 04-15-2008 08:40 AM

So far not having any luck getting it running in Damn Small Linux. The static version that worked before now tells me my system is too old.
/lib/libpthread.so.0: version `GLIBC_2.3.3' not found (required by ./murgaLua)
I'm not really suprised, though, since DSL does not bother staying cutting-edge on its collection of libs like most other distros.

Also haven't succeeded in compiling it. Bitlib won't build, and if I try to skip it I get many pages of errors from bind-fltk. Maybe an issue with the way FLTK was compiled, but I couldn't say. Here are the last few lines, though there are literally hundreds or possibly thousands of similar lines

Quote:
bind-fltk-ext.cxx:190: error: ISO C++ forbids declaration of `lua_setglobal'
with no type
bind-fltk-ext.cxx:190: error: redefinition of `int lua_setglobal'
bind-fltk-ext.cxx:184: error: `int lua_setglobal' previously defined here
bind-fltk-ext.cxx:190: error: initializer list being treated as compound
expression
bind-fltk-ext.cxx:190: error: invalid conversion from `const char*' to `int'
bind-fltk-ext.cxx:193: error: ISO C++ forbids declaration of `luaL_dostring'
with no type
bind-fltk-ext.cxx:193: error: redefinition of `int luaL_dostring'
bind-fltk-ext.cxx:187: error: `int luaL_dostring' previously defined here
bind-fltk-ext.cxx:193: error: initializer list being treated as compound
expression
bind-fltk-ext.cxx:193: error: invalid conversion from `const char*' to `int'
bind-fltk-ext.cxx:195: error: parse error before `return'
make[1]: *** [bind-fltk-ext.o] Error 1

The bitlib error didn't look like it was caused by bitlib itself, but I assume it's related since removing bitlib from the Makefile skipped that particular problem.

Quote:
cd ../3rd-party/bitlib-25;./configure > /dev/null
configure: error: C compiler cannot create executables
See `config.log' for more details.
make: *** [linux] Error 77

Maybe bitlib's configure script is an idiot.
EDIT: I found this in config.log: gcc: /usr/local/lib/libffi.a: No such file or directory
No idea what libffi is, but it must be the culprit.

I'll check out this build next time I boot Slackware, but for now it looks like most of the additions were things I probably won't use any time soon....so I'm okay with 0.6.6 =o)


RE: MurgaLua 0.6.8 - mikshaw - 04-15-2008 08:56 AM

I wonder if you might consider some time in the future the possibility of including flags in the Makefile (or include a config.h) that can be used to disable unwanted packages. ...or are they stuck in there too tight?


RE: MurgaLua 0.6.8 - JohnMurga - 04-15-2008 11:58 PM

mikshaw Wrote:
I wonder if you might consider some time in the future the possibility of including flags in the Makefile (or include a config.h) that can be used to disable unwanted packages. ...or are they stuck in there too tight?

The idea is that everything in murgaLua forms part of a core platform, and as such you can ensure your code works as is on all supported OSs ... So disabling unwanted packages wouldn't make much sense.

I'll re-do the Linux builds tonight and test them on DSL.

The errors you are getting on the compile seem to be due to a bad build environment.

Cheers
JohnM


RE: MurgaLua 0.6.8 - mikshaw - 04-16-2008 03:55 AM

Probably is a bad environment. I installed Lua and FLTK into /opt so I could just mount them when needed...maybe I mistyped a path or variable name somewhere.
I'll try it again a little later, but I think I'll also need to install libffi first.


RE: MurgaLua 0.6.8 - JohnMurga - 04-16-2008 09:48 AM

Ummm ... Getting a reliable cross-distro version with pThreads seems to be a bit of a challenge.

I'll try some more tomorrow.

Take this as a pretty bad testing build :-(

Cheers
JohnM


RE: MurgaLua 0.6.8 - JohnMurga - 04-16-2008 06:56 PM

I am hoping I'll have another build tonight ...

The problem is that pthreads on Linux are very closely tied to the version of libc being used ... I have a couple of ideas on how I may get around this, but for now I may just yank LuaTask and maybe release a 0.6.9 later.

Either way I haven't much feedback on this build, which I am assuming is bad :-(

Cheers
JohnM


RE: MurgaLua 0.6.8 - jpjacobs - 04-16-2008 09:57 PM

Well, i think this release has a lot of powerfull features like alien, and the crypto stuff, but i'm kinda loosing the oversight over all the features.
so maybe a little extra documentation which covers about what's possible with the extra libs (or even just links to the documentation of the libs) would be nice.

As for the rest, thumbs up, and thanks for the effort!

Jan-Pieter


RE: MurgaLua 0.6.8 - JohnMurga - 04-16-2008 11:00 PM

I have done reading up on this ... And the threading features will be removed in tonights build.

Threads changed a lot in kernel 2.6 compared to 2.4 ...
And the overhead, hassle and uncertainty make it even less attractive to keep this in.

Specially with non-blocking IO and co-routines.

Sorry for wasting your time :-)

I want to ensure that the builds are compatible with DSL.

Cheers
JohnM


RE: MurgaLua 0.6.8 - Juergen - 04-17-2008 01:55 AM

JohnMurga Wrote:
I have done reading up on this ... And the threading features will be removed in tonights build.

Threads changed a lot in kernel 2.6 compared to 2.4 ...
And the overhead, hassle and uncertainty make it even less attractive to keep this in.

Specially with non-blocking IO and co-routines.

Sorry for wasting your time :-)

I want to ensure that the builds are compatible with DSL.


Hi John

I don't think it would be justified to remove such a feature because of troubles with such old systems (glibc 2.3.3 is from January 2005). Even if you remove threading support it is not guaranteed that it will run on 3+ year old systems. Unfortunately in this respect Linux isn't Windows, where ancient binaries still run (except Windows Vista). I still remember those days, when most distributions switched from libc5 to glibc2 and it was nearly impossible to run binaries on different distributions or even on newer or older releases of the same distribution. Then later there were changes in the loader, the C++ ABI, ....

Even if you remove the threading functionality you can't expect that murgaLua runs on a system pre glibc2.3 or (I'm not even sure if glibc2.3.[01] works).

so if you wan't to support such old systems (I guess LD_ASSUME_KERNEL=2.2.5 still won't do the trick on DSL) then it would make sense to install such an old system (maybe with qemu or virtualbox) and compile there a murgaLua_vintage release (Although there could be problems with fltk). I guess luathreads also works with linuxthreads.

While it makes sense to use coroutines and async io multiplexing (I haven't had time to check everything, but I gess there is still no switch?), they can't replace seperate threads (there are situations where syscalls can block for seconds and this can't be handled with coroutines, if you still wan't at least some responsiveness). Also there are increasingly more multiprocessor systems which could benefit from thread support.

Btw.: I just did a few tests with io from luasys:
734121984 bytes (with hot caches of course) to /dev/null:

  • stock lua with stdio: ~1400ms
  • murgaLua with stdio: ~2200ms :-(
  • murgaLua with sys io and fresh buffers for every read: ~1100ms
  • murgaLua with sys io using the same buffer: ~355ms ;-)

I guess you count this as speedup. Unfortunately the stdio performance problem is still there.

Juergen


RE: MurgaLua 0.6.8 - mikshaw - 04-17-2008 03:48 AM

OT:

You keep saying "such old systems", when I'm running a DSL version released only a few months ago.

To be fair, DSL is "old" in that it has retained many older libraries, but the distro is being regularly updated with new features and applications (glibc is 2.3.2 afaik). Most other distros opt for "bigger and newer" when those two words are often not synonymous with "better". If DSL were to follow suit, it's primary goal of reviving old hardware would be lost. If I understand what John said, the issue is in the kernel version rather than libraries anyway. DSL uses an updated 2.4 kernel rather than suffer the bloat and the loss of older hardware support that comes with 2.6

It is frustrating sometimes, particularly when attempting to add new versions of many applications, but it serves an important purpose that is served by very few others. Too many devs put their focus mainly on "cutting edge" distros like Ubuntu, and even installing from source often fails on systems older than a year or two.

Keep in mind also that DSL is one of only a couple of distributions that provide the latest version of murgaLua (or any version, really) in its base, and it's still in the top 10 on distrowatch so apparently many people don't consider it a terribly old system. I've tried many popular and new distros over the last few years, and most of them are too flaky to trust. Once in a while I find something that is stable and fast, and DSL is one of those.

btw, even if it was 3 years old, I don't believe that's terribly old. I ran a Slackware system as my desktop for 4 years, and when upgrading it was only to see what was new. As it turned out I wish I had not "upgraded". The only reason I haven't gone back to the older version is because my installation disks are damaged.
Then again, that system also had a 2.4 kernel.


RE: MurgaLua 0.6.8 - JohnMurga - 04-17-2008 05:04 PM

A new snapshot which reflects the current state of development can be found at :

http://www.murga-projects.com/files/

This now works with DSL ... Note : The MacOS binary hasn't been updated due to lack of time

Juergen Wrote:
I don't think it would be justified to remove such a feature because of troubles with such old systems (glibc 2.3.3 is from January 2005). Even if you remove threading support it is not guaranteed that it will run on 3+ year old systems. Unfortunately in this respect Linux isn't Windows, where ancient binaries still run (except Windows Vista). I still remember those days, when most distributions switched from libc5 to glibc2 and it was nearly impossible to run binaries on different distributions or even on newer or older releases of the same distribution. Then later there were changes in the loader, the C++ ABI, ....

Even if you remove the threading functionality you can't expect that murgaLua runs on a system pre glibc2.3 or (I'm not even sure if glibc2.3.[01] works).

so if you wan't to support such old systems (I guess LD_ASSUME_KERNEL=2.2.5 still won't do the trick on DSL) then it would make sense to install such an old system (maybe with qemu or virtualbox) and compile there a murgaLua_vintage release (Although there could be problems with fltk). I guess luathreads also works with linuxthreads.


murgaLua has always worked with DSL as it happens, and the purpose of the static build is to have something that works on as many different Linux systems as possible ... Including those over 3 years old ;-)

As it happens it is difficult to make something that works across different variants of the same version of glibc ... Which is a shame as far as I am concerned, but either way the static build was doing a pretty good job of that as demonstrated by the testing to took place around 0.6.6.

I believe the secret is to load whatever implementation of POSIX theads is available on the system, as opposed to specificing it at link time ... However to change the code to do this will be time consuming, although I might consider it for a 0.6.9 release.

Thanks for the IO tests ... I was interested to see if this helped the PIPE problems you mentioned earlier.

Cheers
JohnM