@Chris
Quote:
I'm drifting off the point now, but some information on why this has been done and why it is a Good Thing would be appreciated.
The question should be, why would you NOT want it? What is the problem with calling something .so instead of .library?
Python for example, yes, it can be done with an AmigaOS shared library, but at what cost? And when the next version comes out, you need to do a lot of work over again? With this update of elf.library, all I need to do is compiled with -fPIC and link with -shared, and I have a shared version of it.
With every projects, there is always a certain energy required to get you started. If you can lower that starting energy by providing easier access to certain features, then this can only encourage people to do things they would normally not do. If I didn't have dynamic linking, I would have made Python a static binary and not bothered with a shared version, and the Blender binary would be a lot bigger than it is now.
Just look at Edgar's excellent X11 port. Look at the size of individual programs that are statically linked against libX11. Is it possible to make a shared library libX11? Probably, but why go through the hassle?
Finally, take into consideration that shared objects provide different functionality. They have their individual per-context data contrary to AmigaOS libraries that share their data segment. This is sometimes desired, sometimes it isn't. Also, shared objects export symbols by name, and can import symbols by name, from any other shared object (even those loaded during runtime) or the main program. Importing from the main program is something that AmigaOS shared libraries cannot do.
It all boils down to the question of what you want to achieve. shared objects are much easier to use and create. Right now they suffer the drawback that they aren't
really shared (they are loaded for each opening program, although a single program will always use only one copy even if e.g. all of them reference libc.so).
About the placement, we are not calling them shared libraries for a reason, and therefore they are not placed in Libs:. Everything in LIBS: should be able to be opened with OpenLibrary. Shared objects aren't.
I hope this clears things up a bit.