ServerJS/System: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Show of Hands: showing my hands)
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= System Interface Proposal A =
= System Interface =


All platforms must support a free variable, "system", that is an object that may contain the following attributes.  The "system" variable may be either a global variable, an argument to every module factory function, or inserted into a module scope by some other means.  "system" may be used for dependency injection in sandboxes, so it may be frozen.  Therefore, the variable must not be reassigned, or modified in interoperable modules, although it may be mutable and reassignable in particular platforms.
All platforms must support a module, "system", that may contain the following attributes.


If "system" contains any of the following names, they must have the corresponding meaning:
If "system" contains any of the following names, they must have the corresponding meaning:
Line 9: Line 9:
* stderr: the standard error stream, an object with the same API as a file opened with the mode "w" with no encoding.
* stderr: the standard error stream, an object with the same API as a file opened with the mode "w" with no encoding.
* env: an Object containing posix-style or CGI environment variables.
* env: an Object containing posix-style or CGI environment variables.
* args: an Array containing the command line arguments for the invoking arguments, not including the interpreter/engine but including the path to the program as it was executed.
* args: an Array containing the command line arguments for the invoking arguments, not including the interpreter/engine but including the path to the program as it was executed. See also the [[ServerJS/Command Line|Command Line page]].
* fs: a file default file system root object conforming to the File System API
 
Any names not mentioned here or amended into this specification later should begin with "x" and a vendor-specific label as a prefix, like system.xCajaDomita.  This will permit the future standardization of additional names as needed. Please request additional standard names below.
 
= Compliant Implementations =
 
* [http://github.com/tlrobinson/narwhal/ Narwhal]
* [http://flusspferd.org/ Flusspferd] (in 0.7)
* [http://github.com/hns/helma-ng/ Helma NG] (in 0.4)
 
= Additional proposed names =
 
The following names have been proposed but not ratified for inclusion in the System proposal.
 
* print: The "system" MAY have a "print" function that forwards its thisp and arguments to "system.stdout.print" with lazy binding (meaning that, if system.stdout is replaced, print MUST forward to the new stdout).
 
* log: The "system" MAY have a "log" function that accepts a "message" and an optional "label" String.
** The label MAY be one of "log", "debug", "warn", "error", "pass", "fail".
** Any other, unspecified label MUST be in lower-case and begin with "x" and a vendor-specific label like "x-v8cgi-database".


Any names not mentioned here or amended into this specification later should begin with "x" and a vendor-specific label as a prefix, like system.xCajaDomita.  This will permit the future standardization of additional names as needed.  Please request additional names in [[ServerJS/System/AmendmentProposals]].
* platform: the "system" MAY contain a string with its vendor-specific platform name.


== Show of Hands ==
* global: the "system" MAY contain a reference to the global object.


arguments:
== Removed proposals ==
* A arguments
** Ondrej Zara
** Wes Garland
** Daniel Friesen
* B args
** Tom Robinson,
**  Kevin Dangoor,
** Hannes Wallnoefer,
** Michael O'Brien,
** Chris Zumbrunn,
** Robert Thurnher
** George Moschovitis
* C argv
** Tom Robinson
** Kris Kowal


environment:
* fs: a file default file system root object conforming to the File System API
* 1 env
** Ondrej Zara
** Tom Robinson
** Kris Kowal
** Kevin Dangoor
** Hannes Wallnoefer
** Michael O'Brien
** Chris Zumbrunn
** Robert Thurnher
** George Moschovitis
* 2 environ
* 3 environment
** Wes Garland


system:
* print (proposal A): The "system" MAY have a "print" function that accepts a "message" and an optional "label" String.
* I sys
** The label MAY be one of "log", "warn", "error", "pass", "fail".
** Tom Robinson,
** Any other, unspecified label MUST be in lower-case and begin with "x" and a vendor-specific label like "x-v8cgi-database".
** Kris Kowal
** '''Counter-argument''' This is infact not printing, but logging. 1) there is lots of logging frameworks, 2) it probably doesn't belong on sys, certainl not called ''print''
** Aristid Breitkreuz
*** '''Counter-argument''' However, ''print'' has meant to write a line to stdout in many languages.  That it would frequently be used for logging in non-stdio contexts is not necessarily relevant.
* II System
** Ondrej Zara
* III system
** Ondrej Zara,  
** Kevin Dangoor,  
** Hannes Wallnoefer,  
** Chris Zumbrunn,  
** Robert Thurnher
** George Moschovitis


module or free variable:
= Show of Hands =
* Z as a free variable
** Kris Kowal
** Ihab Awad
* Y as a module
** Hannes Wallnoefer
** Peter Michaux
** Chris Zumbrunn
** Robert Thurnher
** Aristid Breitkreuz


== Comments ==
[[ServerJS/System/ArchivedShowOfHands]]


== Relevant Discussions ==
== Relevant Discussions ==

Latest revision as of 15:49, 14 August 2009

System Interface

All platforms must support a module, "system", that may contain the following attributes.

If "system" contains any of the following names, they must have the corresponding meaning:

  • stdin: the standard input stream, an object with the same API as a file opened with the mode "r" with no encoding.
  • stdout: the standard output stream, an object with the same API as a file opened with the mode "w" with no encoding.
  • stderr: the standard error stream, an object with the same API as a file opened with the mode "w" with no encoding.
  • env: an Object containing posix-style or CGI environment variables.
  • args: an Array containing the command line arguments for the invoking arguments, not including the interpreter/engine but including the path to the program as it was executed. See also the Command Line page.

Any names not mentioned here or amended into this specification later should begin with "x" and a vendor-specific label as a prefix, like system.xCajaDomita. This will permit the future standardization of additional names as needed. Please request additional standard names below.

Compliant Implementations

Additional proposed names

The following names have been proposed but not ratified for inclusion in the System proposal.

  • print: The "system" MAY have a "print" function that forwards its thisp and arguments to "system.stdout.print" with lazy binding (meaning that, if system.stdout is replaced, print MUST forward to the new stdout).
  • log: The "system" MAY have a "log" function that accepts a "message" and an optional "label" String.
    • The label MAY be one of "log", "debug", "warn", "error", "pass", "fail".
    • Any other, unspecified label MUST be in lower-case and begin with "x" and a vendor-specific label like "x-v8cgi-database".
  • platform: the "system" MAY contain a string with its vendor-specific platform name.
  • global: the "system" MAY contain a reference to the global object.

Removed proposals

  • fs: a file default file system root object conforming to the File System API
  • print (proposal A): The "system" MAY have a "print" function that accepts a "message" and an optional "label" String.
    • The label MAY be one of "log", "warn", "error", "pass", "fail".
    • Any other, unspecified label MUST be in lower-case and begin with "x" and a vendor-specific label like "x-v8cgi-database".
    • Counter-argument This is infact not printing, but logging. 1) there is lots of logging frameworks, 2) it probably doesn't belong on sys, certainl not called print
      • Counter-argument However, print has meant to write a line to stdout in many languages. That it would frequently be used for logging in non-stdio contexts is not necessarily relevant.

Show of Hands

ServerJS/System/ArchivedShowOfHands

Relevant Discussions