yfcw14@castle.ed.ac.uk (K P Donnelly) (01/23/91)
We are currently thinking about buying a Unix fileserver which will also be required to run our program libraries from terminal sessions. Obvious candidates are something like a DEC system 5100 or a similar Sun machine. Among many other factors affecting the decision is the relative merit of the SunOS and Ultrix versions of Unix. Can anyone tell me anything about this? I am not familiar with either of them. e.g. I have heard that SunOS has "shareable libraries". I am not sure what these are, but they sound very like the dynamic linking of object files at load time which Edinburgh University's EMAS operating system (now disappearing) has had for over ten years, and the lack of which I find intensely frustrating as I try to move our program libraries to Unix. Makefiles are a very poor substitute. Can anyone tell me whether SunOS shareable libraries are really that good, or whether Ultrix is likely to aquire anything similar. Another thing which I find frustrating as we try to move to Unix is the way that many utilities strip the eighth bit at every opportunity. Does Ultrix have better 8-bit character set support, perhaps carried over from the DEC multinational character set on VMS? Kevin Donnelly
mjr@hussar.dco.dec.com (Marcus J. Ranum) (01/24/91)
yfcw14@castle.ed.ac.uk (K P Donnelly) writes: #define NONPARTISAN_MODE >I have heard that SunOS has "shareable libraries". I am not sure >what these are, but they sound very like the dynamic linking of object >files at load time which Edinburgh University's EMAS operating system >(now disappearing) has had for over ten years, and the lack of which I >find intensely frustrating as I try to move our program libraries to >Unix. Makefiles are a very poor substitute. Can anyone tell me whether >SunOS shareable libraries are really that good, or whether Ultrix is >likely to aquire anything similar. Ultrix is not going to have shareable libraries in the near future, but OSF/1 will eventually. I'm not sure of time frames. Right now, though, SunOs has 'em and Ultrix doesn't. What does that mean? It means that the size of your executable under SunOs is smaller than under Ultrix, but otherwise it doesn't make a whole huge difference, depending on the way you run your applications. If you are running the same application a great deal, Ultrix' not having shared libraries doesn't make a difference, because there's a good chance that application will already be at least partially in memory [eg: the shell, or mail, or something like that]. SunOs' libraries are useful for keeping disk space usage down for binaries, and you can get some situations where parts of your shared library are already in memory when an application starts, and don't need to be reloaded, so shared libraries can be a win. SunOs' virtual memory subsystem is different from Ultrix', too - the buffer cache and virtual memory are sharing a common pool, which means that SunOs machines tend to be a little better performers as single-user workstations, and can get ground down a little faster in a timesharing envionment, depending very much on the applications you are running. [IE: on a Sun, when your buddy's on your machine running something memory intensive he is effectively stealing *your* I/O bandwidth, and vice versa]. As far as Makefiles go - SunOs' shared libraries *act* just like compiling and linking a normal executable - you still have to link it just about the same way as you would under any other UNIX. I can't recall if you need to relink applications or not if the shared library is updated. There are some slight constraints required in your code if you want to write position-independent code for your own shared libraries, I think [unless that has changed since SunOs4.0]. >Another thing which I find frustrating as we try to move to Unix is the >way that many utilities strip the eighth bit at every opportunity. Does >Ultrix have better 8-bit character set support, perhaps carried over >from the DEC multinational character set on VMS? Ultrix is well-behaved about 8-bit data, and has a lot of nice internationalization tools for supporting various character sets. I never played with that part on a Sun. mjr.
vixie@wrl.dec.com (Paul Vixie) (01/24/91)
Sharable libraries are a huge win, period. Ultrix does not have them yet and I consider this an embarrassment. OSF/1 has them, so at a time no later than when a version of Ultrix is based on OSF/1, Ultrix will have shared libraries. (Not speaking as a Digital employee here.) If you don't like Makefiles, you have a different sort of problem. With shared libraries, your Makefiles become even more important since there are many fiddlin' details about creating and linking with shlibs that simply cannot be done by hand. Make is your friend -- trust me. If you can get over the initial "why did they make it so complicated?" doubts, you'll embrace Make and wonder how you ever did without it. Ultrix is very good about 8-bit support. They've also fixed things like backspace not working when echo is off; in general, a user gets what they expect from the Ultrix tty system. I don't know how well SunOS is doing in this area. Probably it depends on how many systems they sell overseas. Cheers, -- Paul Vixie DEC Western Research Lab <vixie@wrl.dec.com> Palo Alto, California ...!decwrl!vixie
krs0@gte.com (Rod Stephens) (01/24/91)
In article <8012@castle.ed.ac.uk> yfcw14@castle.ed.ac.uk (K P Donnelly) writes: : : > >e.g. I have heard that SunOS has "shareable libraries". I am not sure >what these are, but they sound very like the dynamic linking of object >files at load time which Edinburgh University's EMAS operating system >(now disappearing) has had for over ten years, and the lack of which I >find intensely frustrating as I try to move our program libraries to >Unix. Makefiles are a very poor substitute. Can anyone tell me whether >SunOS shareable libraries are really that good, or whether Ultrix is >likely to aquire anything similar. Shareable libraries mean 2 applications using the same library functions can share the same image of the library and do not need to include the library in their executables. This is REALLY nice for X windows where a "hello_world" program takes about a megabyte -- mostly X library code. "Dynamic linking" (late binding) is a seperate but related issue. DEC says Ultrix will be OSF/1-based around the end of 1991 and OSF/1 specifies shareable libraries and late binding. DEC will probably implement them in Ultrix. >Another thing which I find frustrating as we try to move to Unix is the >way that many utilities strip the eighth bit at every opportunity. Does >Ultrix have better 8-bit character set support, perhaps carried over >from the DEC multinational character set on VMS? > > Kevin Donnelly OSF/1 also apecifies "8-bit clean" functions which means functions are not allowed to strip off the 8th bit. +---------------------------------------------------------------+ | Rod Stephens | "Haven't I told you not to play | | GTE Laboratories, Inc | with my super-weapons? You might | | (617)466-4182 | devastate yourself!" | | krs0@gte.com | | +---------------------------------------------------------------+
fingerhu@ircam.fr (Michel Fingerhut) (01/24/91)
Paul Vixie writes: >Ultrix is very good about 8-bit support. Except for this csh bug in command completion where it does not know how to deal with it, and will display garbage on the screen. SPR posted by the local support group.
klee@wsl.dec.com (Ken Lee) (01/25/91)
While it's true that you will see large disk space savings by using shared libraries, it's my understanding that no 3rd party software vendors will use them because of the huge QA and support problems. Any software vendors care to comment? Thanks. -- Ken Lee DEC Western Software Laboratory, Palo Alto, Calif. Internet: klee@wsl.dec.com uucp: uunet!decwrl!klee
evans@decvax.DEC.COM (Marc Evans) (01/25/91)
In article <1991Jan24.102601@wsl.dec.com>, klee@wsl.dec.com (Ken Lee) writes: |> While it's true that you will see large disk space savings by using |> shared libraries, it's my understanding that no 3rd party software |> vendors will use them because of the huge QA and support problems. Any |> software vendors care to comment? Thanks. Well, I can make a couple of comments, though I am not really vendor. Apollo in its early years did not provide anything but shared libraries for use by vendor's applications. Even with the latest versions of the OS's from Apollo, the shared libraries are by far the more common libraries used. Why did they start providing static libraries? Because the standards they were targeting required them is what I've heard. DEC, on its VMS systems have been using shared libraries for quite some time. Most third parties make extensive use of these. The majority of the 386 unix vendors provide shared libraries. Most of the programs that I have purchased for my 386 box make use of these. My experience with SunOS and third parties is unfortunately limited, so I can't really say if vendors are using them, but as you have read above, other groups make use of shared libraries. I personally don't buy the argument that QA and support issues are good reasons to not use/provide shared libraries. - Marc -- =========================================================================== Marc Evans - WB1GRH - evans@decvax.DEC.COM | Synergytics (603)635-8876 Unix and X Software Contractor | 21 Hinds Ln, Pelham, NH 03076 ===========================================================================
mcnally@wsl.dec.com (Mike McNally) (01/25/91)
In article <518@decvax.decvax.dec.com.UUCP>, evans@decvax.DEC.COM (Marc Evans) writes: |> The majority of the 386 unix vendors provide shared libraries. Most of the |> programs that I have purchased for my 386 box make use of these. While it's true that System VR3 includes static shared libraries, my experience has been that only the system utilities actually use them. Of many products my former employer had, including WordPerfect, Q-Calc, 20/20, Informix, and Oracle, *none* used the shared libc.a. Things might be different with newer R4 systems. -- * "In the Spirit as my automatics, * Mike McNally * Lystra and Zelda were one third * Coolie * as large as the infinite Cosmos." * DEC Western Software Lab * --- D. S. Ashwander * mcnally@wsl.dec.com
ggm@brolga.cc.uq.oz.au (George Michaelson) (01/25/91)
Shared libs on suns are a bit of a two edged sword. If you install code compiled against a newer libc.so you don't stand much chance of getting it to work. As long as there are major upgrade steps in motion, multiple releases in the field and different dates for release of code across the planet, taking s/w off the network from far away is a bummer. I might point out I am still using Ultrix 3.1D so I find all this discussion a bit academic... Secondly, dumb mistakes can smash the system completely. I think Sun should be more careful about making a subset of the commands statically linked so you dont loose ls ldconfig cat mv tar etc when you barf over libc. Perhaps I misunderstand what should be done in these cases, but based on smashing libc on a SunOS 4.1 3/60 earlier this year, I know of no way to recover other than reloading MUNIX or the miniroot onto swap and pulling code off the tapes. If you have 3rd party drives this can get interesting (does the miniunix understand *your* flavour of SCSI?) Lastly, It seems very odd that DEC didn't do this much earlier. Are shared libs really that hard to do? -George -- G.Michaelson Internet: G.Michaelson@cc.uq.oz.au Phone: +61 7 365 4079 Postal: George Michaelson, the Prentice Centre, The University of Queensland, St Lucia, QLD Australia 4072.
alan@shodha.enet.dec.com ( Alan's Home for Wayward Notes File.) (01/25/91)
In article <518@decvax.decvax.dec.com.UUCP>, evans@decvax.DEC.COM (Marc Evans) writes: > In article <1991Jan24.102601@wsl.dec.com>, klee@wsl.dec.com (Ken Lee) writes: > |> [ Ken makes the first comment about Q/A and support problems and shared libraries. ] > > [ Marc comments about Apollo, VMS and 386 vendors. ] > > My experience with SunOS and third parties is unfortunately limited, so I > can't really say if vendors are using them, but as you have read above, other > groups make use of shared libraries. I personally don't buy the argument that > QA and support issues are good reasons to not use/provide shared libraries. IF you trust the vendor not to change the function and interface to the parts of shared library, then the Q/A is easy. As long as it still runs then it probably runs correctly. The problems come if the vendor changes the function of something so that it isn't quite the same as before. Or changes the size of data structure. Presumably the vendor will have a method of applying version numbers to shared libraries that the dynamic load checks to make that things haven't changed (ident mismatch in VMSese). Even if the vendor uses these version numbers correctly, if they change the version numbers to often (every new release or maybe every other release) it requires the 3rd party company to re-link at each library change. And if you have to re-link you have to re-test. The 3rd party company also has to be careful about taking advantage of mis-features in a shared library function. If the vendor decides that feature was a bug and fixes it, the application may break. Still not an excuse for not having shared libraries, but these some of the problems that 3rd party people can run up against. > > - Marc > -- > =========================================================================== > Marc Evans - WB1GRH - evans@decvax.DEC.COM | Synergytics (603)635-8876 > Unix and X Software Contractor | 21 Hinds Ln, Pelham, NH 03076 > =========================================================================== -- Alan Rollow alan@nabeth.cxn.dec.com
kocks@jessica.stanford.edu (Peter Kocks) (01/26/91)
From what I hear Sun has good costumer support as far as software goes (is this true?). Dec has great hardware support but their ultrix support has much to desired. Many times they don't know the answers to questions regularly discussed in this group. I think this is mostly because DEC has for years concentrated on their VMS product and is not up to speed on ultrix. I have not used Suns much, but I had one horrible experience. When you buy a Sun out of the box it does *not* come with a fully ANSI C compiler. Specifically, I tried to port my programs to a Sun only to find that they do not support function prototyping. I use prototyping all the time to avoid making simple errors (I think everybody should) and cosequently I could not compile on the Sun. (By the way if you prototype you can change the order of the functions and so when you remove the prototype, you may also need to change the order of the functions). Now it is possible that I just did something wrong with this, but a Sun employee told me this was in fact the case. The way around it is to get gcc or some other compiler that actually works the way it should. Of course, most people have made programs compatible with suns, so you should not have a problem. Of course, you may have problems with you own programs. On the other hand, there is not nearly the same software base in ultrix that there is in sun, but most of what you need is there. I compared the manuals from Sun and Ultrix and found the Sun ones much better as regards system management. They made nfs and yp and it shows in their documentation. Peter Kocks kocks@jessica.Stanford.EDU
fisk@netcom.UUCP (Benjamin Fisk) (01/28/91)
In article <1991Jan24.102601@wsl.dec.com>, klee@wsl.dec.com (Ken Lee) writes: > While it's true that you will see large disk space savings by using > shared libraries, it's my understanding that no 3rd party software > vendors will use them because of the huge QA and support problems. Any > software vendors care to comment? Thanks. > Shared libraries not only save on disk space but they are also usefull in cotrolling software releases. One person can change a central library and effectively change a number of other users library. This can cut down on the amount of chaos that can occur when lots of developers are making changes to a common module. This kindof software develpoment is common in VM shops. I am supprised to find out that it is not common place in the UNIX world. Shared libraries can lead to problems if its administration is not done with great care. Shared libraries are a feature that developers enjoy. It is not necessarily a feature for production software soaks B. Fisk
davecb@yunexus.YorkU.CA (David Collier-Brown) (01/28/91)
alan@shodha.enet.dec.com ( Alan's Home for Wayward Notes File.) writes: | IF you trust the vendor not to change the function and interface | to the parts of shared library, then the Q/A is easy. As long | as it still runs then it probably runs correctly. The problems | come if the vendor changes the function of something so that it | isn't quite the same as before. Or changes the size of data | structure. Presumably the vendor will have a method of applying | version numbers to shared libraries that the dynamic load checks | to make that things haven't changed (ident mismatch in VMSese). This does not appear to be implemented **or implementable** with an unchanged sun/bsd interface... | Even if the vendor uses these version numbers correctly, if they | change the version numbers to often (every new release or maybe | every other release) it requires the 3rd party company to re-link | at each library change. And if you have to re-link you have to | re-test. Compatable roll-forward and -back is a known solved problem in computer science **for cases of a client program requesting a service via an invariant interface**. The tricky part is evolving an interface, which tends to cause one to pore over lint output. This may be solved in the domain of formal spcification of the interface, where a change in the specification can yield, by a somewhat exhaustive procedure, a partial specification of the change required to the code. I just don't know if anyone has done the work yet... --dave -- David Collier-Brown, | davecb@Nexus.YorkU.CA | lethe!dave 72 Abitibi Ave., | Willowdale, Ontario, | Even cannibals don't usually eat their CANADA. 416-223-8968 | friends.
mjr@hussar.dco.dec.com (Marcus J. Ranum) (01/28/91)
fisk@netcom.UUCP (Benjamin Fisk) writes: >Shared libraries not only save on disk space but they are also >usefull in cotrolling software releases. One person can change >a central library and effectively change a number of other >users library. I did exactly this and managed to totally break nearly everything on my system at once. It was a pretty neat trick. Fortunately I was able to repair it, after a little running about red-faced. I think in the early 4.0 releases (the first with shared libs) SunOs had a bug in fgets() that was rather serious - fixing it was simply a matter of repairing the system library - so it's a useful feature if used carefully. The earlier versions of 4.X used to have a really amusing feature in which the program that the systems administrator could use to manipulate shared libraries was compiled with dynamic linking. So, if you *DID* trash your shared-load cache, you couldn't fix it because the fixer was broken too. mjr. -- Q: How many Real Programmers does it take to screw in a lightbulb? A: It depends.
barnett@grymoire.crd.ge.com (Bruce Barnett) (02/15/91)
In article <1991Jan23.223402.28704@decuac.dec.com> mjr@hussar.dco.dec.com (Marcus J. Ranum) writes: > What does that mean? It means that the size of your executable > under SunOs is smaller than under Ultrix, but otherwise it doesn't make > a whole huge difference, depending on the way you run your applications. The big difference is when you run several different window-based applications. Sun use to link several SunView applications into one executable, and by examining the name of the command, jump to the proper branch of the executable. Therefore 5 different programs were really one, and only required one copy in memory. I don't know if this could be done with common DECwindows applications. If you don't have enough memory to run all of the applications at once, shared libraries can make a big difference. -- Bruce G. Barnett barnett@crd.ge.com uunet!crdgw1!barnett
sfreed@ariel.unm.edu (Steven Freed CIRT) (02/15/91)
In article <BARNETT.91Feb14130525@grymoire.crd.ge.com>, barnett@grymoire.crd.ge.com (Bruce Barnett) writes:
-> applications. Sun use to link several SunView applications into one
-> executable, and by examining the name of the command, jump to the
-> proper branch of the executable. Therefore 5 different programs were
-> really one, and only required one copy in memory.
-> I don't know if this could be done with common DECwindows applications.
Look again...DECwindows applications already do this.
--
Thanks,
Steve. sfreed@ariel.unm.edu
frank@croton.nyo.dec.com (Frank Wortner) (02/15/91)
In article <BARNETT.91Feb14130525@grymoire.crd.ge.com>, barnett@grymoire.crd.ge.com (Bruce Barnett) writes: > Sun use to link several SunView applications into one > executable, and by examining the name of the command, jump to the > proper branch of the executable. Therefore 5 different programs were > really one, and only required one copy in memory. > I don't know if this could be done with common DECwindows applications. Sure is possible, and it is already done. On my system (DECstation 3100, ULTRIX 4.0) dxwm, dxterm, dxue, and dxsession are one binary. Dxcalc, dxcalendar, dxpuzzle, and dxclock are another, while dxcardfiler, dxpaint, and dxvdoc are a third. Frank
grr@cbmvax.commodore.com (George Robbins) (02/16/91)
In article <1928@riscy.enet.dec.com> frank@croton.nyo.dec.com (Frank Wortner) writes: > In article <BARNETT.91Feb14130525@grymoire.crd.ge.com>, > barnett@grymoire.crd.ge.com (Bruce Barnett) writes: > > Sun use to link several SunView applications into one > > executable, and by examining the name of the command, jump to the > > proper branch of the executable. Therefore 5 different programs were > > really one, and only required one copy in memory. > > I don't know if this could be done with common DECwindows applications. > > Sure is possible, and it is already done. On my system (DECstation 3100, > ULTRIX 4.0) dxwm, dxterm, dxue, and dxsession are one binary. Dxcalc, > dxcalendar, dxpuzzle, and dxclock are another, while dxcardfiler, dxpaint, > and dxvdoc are a third. Wouldn't shared libraries be a better solution than mashing sources together to mimimize the overhead from multiple library copies??? -- George Robbins - now working for, uucp: {uunet|pyramid|rutgers}!cbmvax!grr but no way officially representing: domain: grr@cbmvax.commodore.com Commodore, Engineering Department phone: 215-431-9349 (only by moonlite)
trost@reed.bitnet (Bill Trost,Box 607,ext 640,) (02/26/91)
In article <BARNETT.91Feb14130525@grymoire.crd.ge.com>,barnett@grymoire.crd.ge.com (Bruce Barnett) writes:
Sun use to link several SunView applications into one executable,
and by examining the name of the command, jump to the proper
branch of the executable. Therefore 5 different programs were
really one, and only required one copy in memory. I don't know if
this could be done with common DECwindows applications.
If I remember correctly, dxwm, dxuil, dxterm, dxsession, and one other
program were actually all the same program under some version of RISC
Ultrix (probably 2.2).