From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,NICE_REPLY_A autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5025 invoked from network); 11 Oct 2021 06:44:47 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 11 Oct 2021 06:44:47 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 265D79C0C9; Mon, 11 Oct 2021 16:44:42 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id D9D809B934; Mon, 11 Oct 2021 16:44:04 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eIUye1GM"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id E796B9B934; Mon, 11 Oct 2021 16:44:00 +1000 (AEST) Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by minnie.tuhs.org (Postfix) with ESMTPS id 220739B933 for ; Mon, 11 Oct 2021 16:43:58 +1000 (AEST) Received: by mail-pj1-f51.google.com with SMTP id ls18so12508567pjb.3 for ; Sun, 10 Oct 2021 23:43:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:reply-to:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=bfO0147o1fuTE0TgZBZ+K6YLFa6Jx0w0vBU4IzmUeRU=; b=eIUye1GMNfmBVbAIWr/+5QPhkCg5dkTtERtL5vrAZo4rFdxjX3rQy42uTbEC4cQF0k mLKZ5O3JJ4J1aZUaUxwwgyUiBi8IovOg2/cHSzQDxHUmimO73dwJEqt6d7P9YSnI4Bu1 S13yKcoDftkbXeTPjyPL440foTQZlJeQzmRc/kQXvzXpdDZllxMA/VXllzp/LSNe1hj7 AWyPigP35e11N0Tv8S+HnMCaseXdD/8jG/rCOaCeavDLbCVS8DJRsBCZJKoYdrKB0XtE 6FwxePLBfTZvP4fF8787vAAwKabujuGr47vP9uIgYPQCfIrNREa/2Pg1lZj6Q3N/1cTv ogyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:reply-to:subject:to:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=bfO0147o1fuTE0TgZBZ+K6YLFa6Jx0w0vBU4IzmUeRU=; b=ZOPtARWtYh9PL2YA25NVyf0CKTZWyjBipGr65k6vQuWW2gBgZViJ1DrZ387581UrH+ H8MBS/vsv4ZRDCCvPTZRP4k8epXt7/D7LRiZPiegCP6TKL9DC9/+jvmIZGwEv29e5cKq YXF9kAFCwg8aLqRxF2WIG38masvuJpFYjVTBxXcUoEc0PUVvsU+qBDCoPpbk43Ta3nyI Yh+pp3Sjd9+8Ma+Twcud06deDbsptWADRt9vJfK/iTolY74QlIgDqzEhg4jWJL8M+sH5 DRzm0aPuo5Nx7xrnVP78HSf0MNZLyNXibCLzv+lItzO+OQCUE5LN40utwtt79iiSpxRV mPOQ== X-Gm-Message-State: AOAM531Qvu4s2g3X2TDBpvNPnAnpwQTwYYUnFkpKA7SL0iBEmc2b/GZY +toj+tHkVYmTR9xPcECkqfujPw36a/uINw== X-Google-Smtp-Source: ABdhPJxSYOnWr/bkR/qQuaSWA4uTop1CW/zspwMkjD1JBKd0p7pjQwHjmwpv9b+47i0+75HUMzlcVg== X-Received: by 2002:a17:90a:7e82:: with SMTP id j2mr28391046pjl.165.1633934636914; Sun, 10 Oct 2021 23:43:56 -0700 (PDT) Received: from [10.0.0.18] (c-98-210-178-152.hsd1.ca.comcast.net. [98.210.178.152]) by smtp.gmail.com with ESMTPSA id q14sm17749550pjm.17.2021.10.10.23.43.56 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 10 Oct 2021 23:43:56 -0700 (PDT) To: tuhs@minnie.tuhs.org References: <202109301039.18UAdT0F026748@freefriends.org> Message-ID: Date: Sun, 10 Oct 2021 23:43:45 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <202109301039.18UAdT0F026748@freefriends.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [TUHS] Early shared library implementations X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Rob Gingell via TUHS Reply-To: gingell@computer.org Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" On 9/30/2021 2:01 AM, Paul Ruizendaal via TUHS wrote: > So far, I have not come across any shared library implementations or > precursors in early Unix prior to SunOS 4. On 9/30/2021 3:39 AM, arnold@skeeve.com wrote: > In more or less the same time frame, the AT&T UnixPC / 3B1, which was > OEM'ed from Convergent, had shared libraries. This was ~ 1986. On 9/30/2021 7:12 AM, Charles H Sauer wrote: > ... A more > sophisticated shared library design was one of the additions in AIX 3. There was also SVR3 (which I believe was the basis for the referenced AIX 3 shared library work). SVR3 shipped in 1987, SunOS 4 in May 1988. There was a swarm of UNIX shared library projects during the 1980s. Some of those preceded or were occurring contemporaneously with SunOS 4. Many reached at least a running prototype stage, perhaps deployed as specials for customers, and some reached product status. Some of the projects had papers published and there are a few old manuals available through bitsavers.org. To fill out the history a bit, here are three (including SVR3) that had papers published. They also serve to illustrate the different approaches being taken. I can not find on-line copies of the papers, but others may have better luck or will have access to paper copies of the conference proceedings. SVR3 has extensive documentation on bitsavers.org, as does some older editions of UTek. The three projects are: 1. a 68000-based 7th Edition port; 2. UTek: Tektronix's version of 4BSD for their workstations; and 3. System V Release 3. The first project had a paper published as part of the USEnix track of a UniForum Conference in January 1984 and was titled "Transparent Implementation of Shared Libraries" and authored by C.B. Downing and F. Farance. The other two had papers published in the 1986 Atlanta Summer USEnix proceedings and were: "A New Virtual-Memory Implementation for UNIX" by E. W. Sznyter, P. Clancy, and J. Crossland (UTek); and "Shared Libraries on UNIX System V" by J. Q. Arnold. A very thorough description of the SVR3 shared library mechanism is available at: http://bitsavers.org/pdf/att/unix/System_V_Release_3/308-139_UNIX_System_V_Release_3_Programmers_Guide_1987.pdf Some UTek documentation, including their mmap specification but appearing to pre-date their shared libraries work, is available at: http://bitsavers.org/pdf/tektronix/6130_4132/ For the "Transparent Implementation..." paper, the "transparent" referred to a goal that an application's source code not be modified to link with shared libraries. That, and sharing, were about the only goals common to all the projects of the era. Nearly every other design choice varied across the projects as determined by the approach taken or the constraints under which the project operated. On the subject of mmap's origins: UTek used mmap, but specified mmap to take a pid instead of a file descriptor for the source of the mapping. It appears they contemplated an fmap to map from a file. So for sharing to occur, there was to be a daemon that scooped up and relocated in its address space all the libraries to be shared and then advertise what it had. Client processes would rendezvous with the daemon at runtime and map the portions of that process they required to accomplish the sharing. A common characteristic of these 3 projects was that symbols were resolved at ld-time, necessitating some external coordination about how address spaces were to be laid out but minimizing run-time overheads. The referenced SVR3 documentation provides a good description of the considerations involved.