system.html 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>Gravity: System</title>
  7. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css" />
  8. <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  9. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700,800">
  10. <link rel="stylesheet" href="scripts/highlight/styles/github-gist.css">
  11. <link rel="stylesheet" href="stylesheets/styles.css">
  12. </head>
  13. <body>
  14. <!-- BEGIN NAVIGATION BAR -->
  15. <nav class="navbar navbar-default navbar-fixed-top">
  16. <div class="container">
  17. <div class="navbar-header">
  18. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
  19. <span class="sr-only">Toggle navigation</span>
  20. <span class="icon-bar"></span>
  21. <span class="icon-bar"></span>
  22. <span class="icon-bar"></span>
  23. </button>
  24. <a class="navbar-brand" href="http://gravity-lang.org"><img src="images/logo.png" width="32px" height="36px"></a>
  25. </div>
  26. <div id="navbar" class="navbar-collapse collapse">
  27. <ul class="nav navbar-nav navbar-right">
  28. <li class="active"><a href="index.html">Gravity</a></li>
  29. <li><a href="internals/index.html">Internals</a></li>
  30. <li><a href="https://github.com/marcobambini/gravity">GitHub</a></li>
  31. </ul>
  32. </div><!--/.nav-collapse -->
  33. </div>
  34. </nav>
  35. <!-- END NAVIGATION BAR -->
  36. <div class="container body-container">
  37. <div class="main-content">
  38. <div class="row">
  39. <!-- BEGIN SIDEBAR -->
  40. <div class="col-sm-3 border-right section-left">
  41. <div saveheight="1" class="sidebar-nav">
  42. <h4>INTRODUCTION</h4>
  43. <ul>
  44. <li><a href="index.html"><span>Introduction</span></a></li>
  45. <li><a href="getting-started.html"><span>Getting Started</span></a></li>
  46. </ul>
  47. <h4>LANGUAGE GUIDE</h4>
  48. <ul>
  49. <li><a href="syntax.html"><span>Syntax</span></a></li>
  50. <li><a href="operators.html"><span>Operators</span></a></li>
  51. <li><a href="types.html"><span>Types</span></a></li>
  52. <li><a href="lists.html"><span>Lists</span></a></li>
  53. <li><a href="maps.html"><span>Maps</span></a></li>
  54. <li><a href="enum.html"><span>Enum</span></a></li>
  55. <li><a href="functions.html"><span>Functions</span></a></li>
  56. <li><a href="closures.html"><span>Closures</span></a></li>
  57. <li><a href="classes.html"><span>Classes</span></a></li>
  58. <li><a href="control-flow.html"><span>Control Flow</span></a></li>
  59. <li><a href="loops.html"><span>Loops</span></a></li>
  60. <li><a href="fibers.html"><span>Fibers</span></a></li>
  61. </ul>
  62. <h4>ADVANCED</h4>
  63. <ul>
  64. <li><a href="api.html"><span>Embedding API</span></a></li>
  65. <li><a href="system.html" class="active"><span>System class</span></a></li>
  66. <li><a href="unit-test.html"><span>Unit test</span></a></li>
  67. <li><a href="contributing.html"><span>Contributing</span></a></li>
  68. </ul>
  69. </div>
  70. </div>
  71. <!-- END SIDEBAR -->
  72. <!-- BEGIN CONTENT -->
  73. <div class="col-sm-9 border-left section-right">
  74. <h1 class="section-header">System</h1><hr>
  75. <p class="section-content">
  76. System class is a class registered in every Gravity VM that offers some useful methods and properties.</p>
  77. <h4 class="section-h4">Print methods</h4>
  78. <pre><code class="swift">
  79. func main() {
  80. // print to stdout and add a newline character
  81. System.print("Hello World");
  82. // print to stdout without any newline character appended
  83. System.put("Hello World");
  84. }
  85. </code></pre>
  86. <h4 class="section-h4">Garbage collector methods</h4>
  87. <p>Gravity automatically manage memory for you using a tri-colour marking garbage collector, using the System class the user has the ability to change some of its settings and even disable it when certain performance critical tasks need to be performed:</p>
  88. <pre><code class="swift">
  89. func main() {
  90. // disable GC
  91. System.gcenabled = false;
  92. // ratio used during automatic recomputation of the new gcthreshold value
  93. var ratio = System.gcratio;
  94. // minimum GC threshold size
  95. var minthreshold = System.gcminthreshold;
  96. // memory required to trigger a GC
  97. var threshold = System.gcthreshold;
  98. // enable GC
  99. System.gcenabled = true;
  100. }
  101. </code></pre>
  102. <h4 class="section-h4">Time related methods</h4>
  103. <p>There are times where it could be really useful to easily measure how much time is spent in a given task:</p>
  104. <pre><code class="swift">
  105. func main() {
  106. var t1 = System.nanotime();
  107. perform_my_task();
  108. var t2 = System.nanotime();
  109. // return elapsed time in ms
  110. return ((t2-t1) / 1000000.0);
  111. }
  112. </code></pre>
  113. <h4 class="section-h4">System Exit</h4>
  114. <p>There are times where it could be useful to have main() return an
  115. error code back to your shell:</p>
  116. <pre><code class="swift">
  117. func main() {
  118. foo(); // Do something useful
  119. System.exit(5);
  120. }
  121. </code></pre>
  122. <p>In your terminal, you can now reference the return code:
  123. <pre><code class="bash">
  124. # Returns: 5
  125. $ echo $?
  126. </code></pre>
  127. </div>
  128. <!-- END CONTENT -->
  129. </div> <!-- /row -->
  130. </div> <!-- /main-content -->
  131. </div> <!-- /container -->
  132. <!-- BEGIN FOOTER -->
  133. <footer class="navbar-fixed-bottom">
  134. <div class="container footer">
  135. <p>
  136. </p>
  137. </div>
  138. </footer>
  139. <!-- END FOOTER -->
  140. <!-- Bootstrap JS -->
  141. <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
  142. <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  143. <!-- Highlights JS -->
  144. <script src="scripts/highlight/highlight.min.js"></script>
  145. <script>hljs.initHighlightingOnLoad();</script>
  146. </body>
  147. </html>