golang / go

The Go programming language
https://go.dev
BSD 3-Clause "New" or "Revised" License
124.28k stars 17.7k forks source link

Feature request: Implement Target OS for IEEE 1003 (POSIX) #838

Closed gopherbot closed 9 years ago

gopherbot commented 14 years ago

by frederic.bonfanti:

Abstract

Proposing a POSIX target platform might ease several pending ports at least in terms of
understanding the deep insights of 
the GO toolchain.

Inferno OS, in its hosted versions, used to implement POSIX calls for some part of the
low level APIs, thus making it 
straightforward to port the EMU (VM) to new platforms. Later on, one could decide to go
for native / proprietary APIs 
whenever partial or complete optimization was relevant.

What would be your $GOOS?  $GOARCH?

 POSIX / {arm,adm64,386}

Which revision are you using?  (hg identify)

 N/A

Please provide any additional information below.

Some of the following POSIX features might be interfaced depending on minimal
requirements and forceable evolutions of 
the GO language:

 POSIX.1, Core Services (incorporates Standard ANSI C)
    Process Creation and Control
    Signals
    Floating Point Exceptions
    Segmentation Violations
    Illegal Instructions
    Bus Errors
    Timers
    File and Directory Operations
    Pipes
    C Library (Standard C)
    I/O Port Interface and Control
    Process Triggers

 POSIX.1c, Threads extensions (IEEE Std 1003.1c-1995)
    Thread Creation, Control, and Cleanup
    Thread Scheduling
    Thread Synchronization
    Signal Handling

The following operating systems being 100% POSIX compliant, they would immediately
benefit from such a target platform 
for the GO language:

    A/UX
    AIX
    BSD/OS
    DSPnano
    HP-UX
    INTEGRITY
    IRIX
    LynxOS
    Mac OS X
    MINIX
    MPE/iX
    QNX
    RTEMS
    Solaris
    Unison RTOS
    UnixWare
    velOSity
    VxWorks

Technologies that might become of interest:

    UWIN from the AT&T Research implements a POSIX layer on top of the Win32 APIs.
    Plan 9 from Bell Labs APE - ANSI/POSIX Environment
    Symbian OS with PIPS (PIPS Is POSIX on Symbian)
    Windows NT kernel when using Microsoft SFU 3.5 or SUA
rsc commented 14 years ago

Comment 1:

Unfortunately that's not how the tool chain works.
POSIX defines a library interface, but in order to do things
like implement lightweight threads, Go must bypass the
standard libraries and talk directly to the operating system.
The mailing list would be an appropriate place for further discussion of this.

Status changed to WontFix.

gopherbot commented 14 years ago

Comment 2 by frederic.bonfanti:

Agreed
Lightweight threads among other GO features are likely to never find an interface to
POSIX threads.