YSL Home

General Info

The YSL's are a set of standard C++ libraries. One of the main advantages of using object oriented techniques in your programming is creating re-usable code objects. Well a group of local programmers in the San Luis Obispo, CA were tired of writing a basic set of container classes and other basic objects every time they switched jobs. The YSL's are the result.

The YSL's purpose is to provide a stable set of objects to build on. Current Object Status. The object status is way out of date, see the release notes for now.

I am starting up a mailing alias for the ysl's, if you want to be on it, drop me mail.

Anonymous CVS access

The YSL's are now available via cvs. They actually have been for a few months, I just haven't publicized the fact until now.

Server connect info:
Password is 'cvs'

The module name is 'ysl' (duh).

eventually links to the documentaion section and style rules why not STL why not GPL

you will need mkdeps and possibly mkrsp to build the ysls. mkdeps for linux and for win32. For win32 builds, you will also need mkrsp.exe.


Version Release Date Link Notes
0.3.2 Sept 1, 1999 HTTP:
  • Minor maintenance release.
  • Added an Initial YBits class to why.
  • Added a YUVectorList to ytl.
  • Added a Qsort_v to yclib (Borland's qsort isn't thread safe).
  • YSemaphore derived classes had cons moved out-of-line (they were big and the performance isn't critical at construction time).
  • Minor YString cleanup.
  • The obDone YEventSemphore rmeoved from YThread as it was obsolete.
  • YTime's '-' op was broke -- fixed.
  • YPushingQueue minor bugfix in for Close_b support in Dequeue_v().
  • In yclib made borland specific stuff nop's in non Borland builds (so that yclib could always be in apps makefiles).
  • Added a -p flag to cp in _machine.rul (to keep files readonly on install).
  • YVector member data order change so that inadvertant passing into a vararg function without cast would get caught.
  • Some initial Microsoft support.
0.3.1 July 1, 1999 HTTP:
  • Admin:
    • Mainly a maintenance release (would have been out sooner but thanks to PacBell I am internetless at home for a while). There are some new things, but mainly cleanup.
    • The .tar.gz and .zip versions are packaged slightly differently. The .tar.gz being made for unix was exported from a unix box so just a CR. The .zip's have CRLF files in them.
    • I made a bin.zip file available on the ftp site that contains a snapshot of the GNU utils for win32 needed to build the YSL's. (basically saves you from instaling the huge bloated cygwin package.)
    • Even with the lack of internet (and thus cvs access to my own server) development on stdio is progressing. Version 0.4 of the YSL's should contain at least an initial cut.
    • I'm nuking the link to the objects status page for now since it was badly out of date. I'll re-add it when I get it updated.
  • Makefiles:
    • Visual C++ and Ming (the egcs compiler for win32 in a small distribution unlike cygwin) support got added. Note that due to a VC++ compiler bug, the code isn't usable under it yet. It can't generate code for some of the templates in ytl (namely YAssocArray) -- which instead of erroring when it can't generate the code, it just doesn't compile it so you fail at link time -- gotta love those quality Microsoft products. For Ming you will need a ming based off of a very recent egcs cvs snapshot (gcc 2.95 which is egcs based is due out RSN and should work fine).
    • make debug target added.
    • ability to change libsize under borland added.
    • bug fix of vpath usage for building libs.
    • main makefile should now support straight command.com (or cmd.exe) under DOS, so no need for 4nt/ndos anymore.
    • defines for HEADERS changed from PUBLIC_HEADERS, and resources in lib support added.
  • why:
    • mem.?pp void** version not defining their const pointer right (should be void *const * not const void **)
    • YString got its char* op removed. By convention code should have been using Base_sz for char* access anyway, but latest egcs has a "feature" (I don't have a new enough version of the C++ spec that defines casting ops so I'm not sure if it is a bug or not) that required this change.
    • YThread had nasty linux port thread bug fixed.
    • YTime got Dur version of the TMToTime functions added (see docs for reasons why).
  • ytl:
    • Single item list stuff moved to a central define in list.hpp.
    • Both list types got documented.
    • Find_b functionality expanded.
    • YBinTree bug fix: Last_v didn't handle one item tree's
    • YBinTree Copy_v implemented (for = op and copy con)
    • Added YHugeList, YHugeSortedList, YUHugeSortedList, YHugeStack, YLinkedList, YVectorSortedList, YUVectorSortedList.
  • appcomm:
    • Close_v added to YBroadcaster (so the close enums got moved to defs.hpp)
    • bug fix in YBlockingQueue gracefull close.
    • bug fix in YBroadcaser to handle queues registering after we are closed.
  • comm:
    • defs.hpp and io.hpp added (added the YIO base class definition).
    • socket stuff changed a little (winsock class nuked) -- replaced with a socketManager. serial/socket changed Read_v semantics to Resize the passwd in YVector to the bytes read.
    • YSerial constructor simplified
0.3.0 May 8, 1999 HTTP:
  • Switched repository to cvs from rcs. Way cool, Makes life and development much nicer. Will add anon cvs access once I grab an example of how to do so in a chrooted environment.
  • Makefiles switched to GNU make. GNU Make makes life a little intersting on a non unix platform, but it meant same makefile system for linux and win32/Borland.
  • With the switch to GNU make and cvs, debug.rul and machine.rul got renamed to a preceding _, since they are templates. Simply copy the _'s versions to the regular names and edit to fit local developmental setup.
  • Linux support is back!!! All libs now fully support linux! (It is really cool to have a multi-threaded app build from the same source under linux and win32).
  • VC 5.0 support and Watcom 11 support is in the works (now that the makefiles are non borland, this should be easier).
  • Documentation. Not complete yet, but the core classes (YVector and YString) ahve had the bad docs killed, and are fully documented.
  • The old ysl lib got renamed to why (ysl is the main project name and it confusing to have a sub lib also called ysl).
  • In why: Added YTime, YSplitter. YSemaphore and YThread got linux support and got cleaned up/simplified in the process. In YString, we can now handle a NULL sz passed in, and StrRev_rob got a bug-fix. YX, mem.?pp, YString, YSplitter, and YTime got documented,
  • In ytl: Added YHugeAllocator, YHugeVector, YHugeVectorOps YVectorList. YBintree/YUBintree got some minor improvements (using == op, some functions moved inline). YList got some egcs fixes and a sppedup in Remove_b. YAllocator is now YVector only (huge version is now in YHugeAllocator). YVecterOps got a fix in Find_ui and a fix to make egcs happy. YVector got documented.
  • The appcomm and yclib libraries got created. yclib handles some signal trapping mess needed by DOS (may add some signal traps in it for linux later). appcomm holds classes to help in inter application communication (mainly between threads). Currently includes YBlockingQueue, YPushingQueue, and YBroadcaster.
  • In comm: YSerial was added. Some socket cleanup (mainly for linux). YSerial is still a little new, but the interface is mostly stable.
  • Like I said, development is picking up momentum :).
0.2.0 Feb 3, 1999 HTTP:
  • Only support for Borland (linux will be added back in later -- really I mean it :) ).
  • Still doesn't include some objects in the release that sort of exist on my machine.
  • Basically no docs yet. A lot of what is in there is wrong. This will be corrected hopefully in the next release.
  • Makefile support very pre-lim. Have yet to find a really good makefile system for DOS based machines.
  • Yes, not much changed between 0.1.0 and 0.2.0. But hey, sometimes life can be distracting. Even with the slow progress over the past 6 months, most of the changes have occured in the past month. Which means the pace of the work has been getting better.
  • The comm library is getting its first appearance (right now just some pre-l;im socket classes, interfaces of which may be changing)
  • In YTL, minor YVector/YStack changes. YAllocator, YAssocArray, YBinTree, YUBintree, YList, YVectorOps added
0.1.0 June 14, 1998 HTTP:
  • First real version. (style rules, semi-usefull)
  • Only support for Borland (linux will be added back in later).
  • Still doesn't include some objects in the release that sort of exist on my machine.
  • Basically no docs yet. A lot of what is in there is wrong. This will be corrected hopefully in the next release.
  • Makefile support very pre-lim. Have yet to find a really good makefile system for DOS based machines.
0.0.0 Sep 1997 HTTP:
  • Pre-lim linux version.
  • Was released unofficially in Sep '97.
  • Offically released Apr 19, 1998
  • Not much here, mainly released since some other folks wanted to see a copy.
  • Only difference between the pre-release and this one is the addition of a libver.txt and the code actually came from version control.

Questions? Comments? Send to:
Steve Roberts(
Last updated: 16 Feb 2000