-
Notifications
You must be signed in to change notification settings - Fork 0
/
syslang.html
134 lines (124 loc) · 6.48 KB
/
syslang.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Language for system programing, or C is not going to stay here forever — Nothing special</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="_static/classic.css" />
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="copyright" title="Copyright" href="copyright.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="nav-item nav-item-0"><a href="index.html">Nothing special</a> »</li>
<li class="nav-item nav-item-this"><a href="">Language for system programing, or C is not going to stay here forever</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="language-for-system-programing-or-c-is-not-going-to-stay-here-forever">
<h1>Language for system programing, or C is not going to stay here forever<a class="headerlink" href="#language-for-system-programing-or-c-is-not-going-to-stay-here-forever" title="Permalink to this heading">¶</a></h1>
<p><em>This article is still being written.</em></p>
<section id="what-is-really-needed-from-the-system-programing-language">
<h2>What is really needed from the system programing language?<a class="headerlink" href="#what-is-really-needed-from-the-system-programing-language" title="Permalink to this heading">¶</a></h2>
<p>There are several important traits that define a certain programing language
as “system” one. First, some important limitations of such language can be
stated:</p>
<ol class="arabic simple">
<li><p>System programing language must have a minimalistic, or even “nil” runtime
component. It should be practical to write programs in such a language which
can be run on “bare iron”. This also implies seamless integration with
platform level assembly code (through appropriate assembly inlining
features).</p></li>
<li><p>The above implies, that complex run-time or storage domain behavior can not
be part of language specifications. Layout of compound variables must be
exactly known to the application implementor (up to the usual alignment and
padding details); non-local transfer of control (such as exceptions) would
also be unsuitable. As “system” applications are typically developed for all
kinds of restricted and customized environments, mechanisms related to memory
allocation and concurrency control must necessarily be provided by user side
libraries, rather than by language specifications.</p></li>
</ol>
<p>Now, that limitations are identified, desirable features of a new system
language can be examined:</p>
<ol class="arabic simple">
<li><p>Fully featured system for “type metaprogramming”, including built-in
compile-time introspection facilities (analogous to Boost.Fusion
functionality).</p></li>
<li><p>Fast compilation, especially considering the need to handle complex generics.</p></li>
<li><p>Compact target binary format; this applies both to executables and loadable
libraries. Support for compact loadable libraries poses an interesting
problem due to the presence of the complex type system.</p></li>
</ol>
<p>The demand for fast compilation is not a mere fancy. Rather, it is expected that
future software system will become increasingly complex, while supporting
increasing number of platforms and revisions. Considering the needs of such as
important development technique as “continuous integration”, as well as
increased productivity of developers when the usual “compile - test - modify”
cycle can be performed rapidly, it is clear that issues of compilation speed
must be given a foremost importance.</p>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Language for system programing, or C is not going to stay here forever</a><ul>
<li><a class="reference internal" href="#what-is-really-needed-from-the-system-programing-language">What is really needed from the system programing language?</a></li>
</ul>
</li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/syslang.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="nav-item nav-item-0"><a href="index.html">Nothing special</a> »</li>
<li class="nav-item nav-item-this"><a href="">Language for system programing, or C is not going to stay here forever</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
© <a href="copyright.html">Copyright</a> 2010 - 2023, Alex Dubov <[email protected]>.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.1.3.
</div>
</body>
</html>