diff options
Diffstat (limited to 'www/requirements.html')
-rw-r--r-- | www/requirements.html | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/www/requirements.html b/www/requirements.html new file mode 100644 index 0000000..8b6a1a7 --- /dev/null +++ b/www/requirements.html @@ -0,0 +1,240 @@ +<!DOCTYPE html> +<html><head> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> +<link href="sqlite.css" rel="stylesheet"> +<title>SQLite Requirements</title> +<!-- path= --> +</head> +<body> +<div class=nosearch> +<a href="index.html"> +<img class="logo" src="images/sqlite370_banner.gif" alt="SQLite" border="0"> +</a> +<div><!-- IE hack to prevent disappearing logo --></div> +<div class="tagline desktoponly"> +Small. Fast. Reliable.<br>Choose any three. +</div> +<div class="menu mainmenu"> +<ul> +<li><a href="index.html">Home</a> +<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a> +<li class='wideonly'><a href='about.html'>About</a> +<li class='desktoponly'><a href="docs.html">Documentation</a> +<li class='desktoponly'><a href="download.html">Download</a> +<li class='wideonly'><a href='copyright.html'>License</a> +<li class='desktoponly'><a href="support.html">Support</a> +<li class='desktoponly'><a href="prosupport.html">Purchase</a> +<li class='search' id='search_menubutton'> +<a href="javascript:void(0)" onclick='toggle_search()'>Search</a> +</ul> +</div> +<div class="menu submenu" id="submenu"> +<ul> +<li><a href='about.html'>About</a> +<li><a href='docs.html'>Documentation</a> +<li><a href='download.html'>Download</a> +<li><a href='support.html'>Support</a> +<li><a href='prosupport.html'>Purchase</a> +</ul> +</div> +<div class="searchmenu" id="searchmenu"> +<form method="GET" action="search"> +<select name="s" id="searchtype"> +<option value="d">Search Documentation</option> +<option value="c">Search Changelog</option> +</select> +<input type="text" name="q" id="searchbox" value=""> +<input type="submit" value="Go"> +</form> +</div> +</div> +<script> +function toggle_div(nm) { +var w = document.getElementById(nm); +if( w.style.display=="block" ){ +w.style.display = "none"; +}else{ +w.style.display = "block"; +} +} +function toggle_search() { +var w = document.getElementById("searchmenu"); +if( w.style.display=="block" ){ +w.style.display = "none"; +} else { +w.style.display = "block"; +setTimeout(function(){ +document.getElementById("searchbox").focus() +}, 30); +} +} +function div_off(nm){document.getElementById(nm).style.display="none";} +window.onbeforeunload = function(e){div_off("submenu");} +/* Disable the Search feature if we are not operating from CGI, since */ +/* Search is accomplished using CGI and will not work without it. */ +if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){ +document.getElementById("search_menubutton").style.display = "none"; +} +/* Used by the Hide/Show button beside syntax diagrams, to toggle the */ +function hideorshow(btn,obj){ +var x = document.getElementById(obj); +var b = document.getElementById(btn); +if( x.style.display!='none' ){ +x.style.display = 'none'; +b.innerHTML='show'; +}else{ +x.style.display = ''; +b.innerHTML='hide'; +} +return false; +} +var antiRobot = 0; +function antiRobotGo(){ +if( antiRobot!=3 ) return; +antiRobot = 7; +var j = document.getElementById("mtimelink"); +if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href"); +} +function antiRobotDefense(){ +document.body.onmousedown=function(){ +antiRobot |= 2; +antiRobotGo(); +document.body.onmousedown=null; +} +document.body.onmousemove=function(){ +antiRobot |= 2; +antiRobotGo(); +document.body.onmousemove=null; +} +setTimeout(function(){ +antiRobot |= 1; +antiRobotGo(); +}, 100) +antiRobotGo(); +} +antiRobotDefense(); +</script> + + + +<h2>1.0 About SQLite Requirements</h2> + + +<ul> +<li><p> +Requirements consist of excerpts from the documentation. +A requirement is usually a one-sentence excerpt but might be a sentence +fragment, multiple sentences, a table, or a GIF image of a bubble syntax +diagram. + +<li><p> +Requirements are written in conversational English and without the +modal auxiliary verb "shall". This grows out of the fact that requirements +are taken from the documentation. The intended audience for the +documentation is application programmers. "Shall" language is appropriate +when the audience consist of contract specialists, QA auditors, and lawyers, +but it interferes with comprehension when the audience is application +programmers. Hence, in order to best serve the intended audience, the +"shall" language is omitted. + +<li><p> +Requirements are sufficiently detailed and precise to permit a 100% compatible +clean-room reimplementation of SQLite. + +<li><p> +The word "requirement" in common English usage implies an ordering: that +the requirement comes before the implementation. +But there is no such ordering with SQLite requirements. +What are called "requirements" in SQLite are better described as +"testable statements of truth about the behavior of the system". + +<li><p> +Every testable statement of truth about SQLite in the +documentation becomes a requirement. + +<li><p> +Requirement numbers are the MD5 hash of the requirement itself. +<ol type="a"> +<li><p>Requirements are inherently immutable, since any change +to the requirement results in a completely different requirement number. + +<li><p>For text requirements, the text is normalized prior to computing the +MD5 hash: +<ul> +<li>Remove all leading and trailing whitespace. +<li>Convert all internal whitespace sequences to a single space character. +<li>Convert "&lt;" to "<", "&gt;" to ">", + "&#91;" to "[", "&#93;" to "]", and + "&amp;" to "&". +</ul> +<li><p>For GIF syntax diagram requirements, the MD5 hash is computed over +the entire content of the GIF image file. + +<li><p>The MD5 hash is expressed in human-readable form as follows: +<blockquote><b>R-</b><i>N</i><b>-</b><i>N</i><b>-</b><i>N</i><b>-</b><i>N</i><b>-</b><i>N</i><b>-</b><i>N</i><b>-</b><i>N</i><b>-</b><i>N</i></blockquote> +Where each <i>N</i> is a 5-digit number between 00000 and 65536 that +represents 16 bits of the 128-bit MD5 hash. + +<li><p>Requirements may be referenced by any unique prefix of their +complete requirement number. +</ol> + +<p><li> +Individual text requirements are identified in the +documentation as text between "<b>^</b>" and the first period or +full-stop ("<b>.</b>") +or as text between "<b>^(</b>" and "<b>)^</b>". +<ol type="a"> +<li><p> +Text requirements are automatically extracted from the documentation by scripts +that run as part of the documentation build process. + +<li><p> +After requirements have been extracted from the documentation, the requirement +markers "<b>^</b>", "<b>^(</b>", and "<b>)^</b>" are removed +from the documentation text. This is done automatically by the documentation +build scripts. + +<li><p> +To avoid collisions with these requirements delimiters, "^" characters that +are part of the text of a requirement or that are otherwise found in the +documentation, should be coded as "&#94;". +</ol> + +<p><li> +Individual GIF syntax diagram requirements are identified in the +documentation as HTML image markup of the +form +<blockquote><b> +<img alt="syntax diagram </b><i>NAME</i><b>" src="</b><i>FILE</i><b>"> +</b></blockquote> +Where <i>NAME</i> is the name of the syntax diagram and <i>FILE</i> is +the name of the GIF file containing the syntax diagram. +<ol type="a"> +<li><p> +Syntax diagram requirements are automatically extracted from the +documentation by scripts +that run as part of the documentation build process. + +<li><p> +The GIF file is the requirement, not the HTML markup that references the +GIF file nor the diagram name. +</ol> + +<li><p> +The documentation that contains the +requirement text is generated by scripts that use as input files +from both files in the documentation fossil repository and +comments in the source code. + +</ul> + + +<h2>2.0 List Of Requirements</h2> + +<dl> + +</dl> +<p align="center"><small><i>This page last modified on <a href="https://sqlite.org/docsrc/honeypot" id="mtimelink" data-href="https://sqlite.org/docsrc/finfo/pages/requirements.in?m=6f99a0bcbd">2022-01-08 05:02:57</a> UTC </small></i></p> + |