1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title>Ring 1.7 の変更履歴 — プログラミング言語 Ring 1.12 取扱説明書</title>
11 <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
14 <script type="text/javascript">
15 var DOCUMENTATION_OPTIONS = {
18 COLLAPSE_INDEX: false,
23 <script type="text/javascript" src="_static/jquery.js"></script>
24 <script type="text/javascript" src="_static/underscore.js"></script>
25 <script type="text/javascript" src="_static/doctools.js"></script>
26 <script type="text/javascript" src="_static/translations.js"></script>
27 <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28 <link rel="next" title="Ring 1.6 の変更履歴" href="whatisnew6.html" />
29 <link rel="prev" title="Ring 1.8 の変更履歴" href="whatisnew8.html" />
30 <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
33 <body role="document">
35 <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">🍩Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
38 <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39 <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40 <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41 <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42 <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43 <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
45 <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46 <li><a title="総合索引" href="genindex.html">Index</a></li>
50 <form action="search.html" method="get">
51 <input type="text" name="q" placeholder="Search" />
52 <input type="hidden" name="check_keywords" value="yes" />
53 <input type="hidden" name="area" value="default" />
64 <a href="whatisnew6.html" title="Ring 1.6 の変更履歴">
69 <a href="whatisnew8.html" title="Ring 1.8 の変更履歴">
75 <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
79 <li>Ring 1.7 の変更履歴</li>
84 <div class="document">
85 <div class="documentwrapper">
86 <div class="bodywrapper">
87 <div class="body" role="main">
89 <div class="section" id="ring-1-7">
90 <span id="index-0"></span><h1>Ring 1.7 の変更履歴<a class="headerlink" href="#ring-1-7" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>Ring 1.7 公開版の新機能と変更点を学びます。</p>
92 <div class="section" id="index-1">
93 <span id="id1"></span><h2>新機能と変更リスト<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
96 <li>新しい命令: Load Package</li>
97 <li>ringvm_see() と ringvm_give() 関数</li>
98 <li>ring_state_new() と ring_state_mainfile() 関数</li>
100 <li>Ring ノートパッドの改善</li>
102 <li>Ring2EXE の改善</li>
106 <li>RingLibuv 拡張機能</li>
109 <div class="section" id="load-package">
110 <span id="index-2"></span><h2>新しい命令: Load Package<a class="headerlink" href="#load-package" title="このヘッドラインへのパーマリンク">¶</a></h2>
111 <p>‘Load’ 命令により、複数の Ring ソースファイルを同じプロジェクトで使えます。</p>
112 <p>しかし、これらのファイルでは同じグローバルスコープを共有しています。</p>
113 <p>さて、 “Load Package” 命令もあります。</p>
114 <p>“Load Package” では新しいグローバルスコープへライブラリ (*.ring ファイル) を読み込むことができます。</p>
115 <p>グローバル変数との名前衝突回避となるため、ライブラリの作成時は非常に便利です。</p>
117 <p>ファイル: loadpackage.ring</p>
118 <div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span> <span class="o">=</span> <span class="mi">100</span>
119 <span class="o">?</span> <span class="s">"Hello, World!"</span>
120 <span class="k">load</span> <span class="n">package</span> <span class="s">"testloadpackage.ring"</span>
122 <span class="o">?</span> <span class="n">x</span>
123 <span class="n">test</span><span class="p">()</span>
126 <p>ファイル: testloadpackage.ring</p>
127 <div class="highlight-ring"><div class="highlight"><pre><span class="o">?</span> <span class="s">"Hello from testloadpackage.ring"</span>
129 <span class="n">x</span> <span class="o">=</span> <span class="mi">1000</span>
131 <span class="n">test</span><span class="p">()</span>
133 <span class="k">func</span> <span class="n">test</span>
134 <span class="o">?</span> <span class="n">x</span>
138 <div class="highlight-none"><div class="highlight"><pre>Hello, World!
139 Hello from testloadpackage.ring
146 <div class="section" id="ringvm-see-ringvm-give">
147 <span id="index-3"></span><h2>ringvm_see() と ringvm_give() 関数<a class="headerlink" href="#ringvm-see-ringvm-give" title="このヘッドラインへのパーマリンク">¶</a></h2>
148 <p>ringvm_see() 関数で See 命令の挙動を変更します。</p>
149 <p>また ring_see() 関数で元の挙動を使用します。</p>
151 <div class="highlight-ring"><div class="highlight"><pre><span class="k">see</span> <span class="s">"Hello world"</span> <span class="o">+</span> <span class="n">nl</span>
152 <span class="k">see</span> <span class="mi">123</span> <span class="o">+</span> <span class="n">nl</span>
153 <span class="k">see</span> <span class="o">[</span><span class="s">"one"</span><span class="p">,</span><span class="s">"two"</span><span class="p">,</span><span class="s">"three"</span><span class="o">]</span>
154 <span class="k">see</span> <span class="k">new</span> <span class="n">point</span> <span class="p">{</span><span class="n">x</span><span class="o">=</span><span class="mi">10</span> <span class="n">y</span><span class="o">=</span><span class="mi">20</span> <span class="n">z</span><span class="o">=</span><span class="mi">30</span><span class="p">}</span>
156 <span class="k">func</span> <span class="n">ringvm_see</span> <span class="n">t</span>
157 <span class="n">ring_see</span><span class="p">(</span><span class="s">"We want to print: "</span><span class="p">)</span>
158 <span class="n">ring_See</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
160 <span class="k">class</span> <span class="n">point</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span>
164 <div class="highlight-none"><div class="highlight"><pre>We want to print: Hello world
165 We want to print: 123
166 We want to print: one
169 We want to print: x: 10.000000
174 <p>ringvm_give() 関数は Give 命令の挙動を変更します。</p>
175 <p>また、 ring_give() 関数は元の挙動を使用します。</p>
177 <div class="highlight-ring"><div class="highlight"><pre><span class="k">see</span> <span class="s">"Name: "</span> <span class="k">give</span> <span class="n">name</span>
178 <span class="k">see</span> <span class="s">"Hello "</span> <span class="o">+</span> <span class="n">name</span>
180 <span class="k">func</span> <span class="n">ringvm_give</span>
181 <span class="k">see</span> <span class="s">"Mahmoud"</span> <span class="o">+</span> <span class="n">nl</span>
182 <span class="k">return</span> <span class="s">"Mahmoud"</span>
186 <div class="highlight-ring"><div class="highlight"><pre><span class="n">Name</span><span class="p">:</span> <span class="n">Mahmoud</span>
187 <span class="n">Hello</span> <span class="n">Mahmoud</span>
191 <div class="section" id="ring-state-new-ring-state-mainfile">
192 <span id="index-4"></span><h2>ring_state_new() と ring_state_mainfile() 関数<a class="headerlink" href="#ring-state-new-ring-state-mainfile" title="このヘッドラインへのパーマリンク">¶</a></h2>
193 <p>ring_state_new() と ring_state_mainfile() 関数は Ring プログラムから別の Ring プログラムを実行します。</p>
194 <p>ring_state_main() 関数とは異なり、こちらは Ring ステートの削除時に制御できます!</p>
195 <p>これは GUI プログラムから別の GUI プログラムを実行するときに重要です。</p>
196 <p>この場合は GUI ライブラリ (RingQt) を共有しており、</p>
197 <p>呼び出し元は qApp.Exec() を呼び出すからです。</p>
198 <p>よって、下位プログラムを停止せずにメインプログラムへ戻ります。</p>
199 <p>ここで下位プログラムのステートを削除してしまうと、下位プログラムのイベント実行時に問題が発生します。</p>
200 <p>ステートを保持することは、下位 GUI プログラムの収容先となっている GUI プログラムでは重要です。</p>
202 <div class="section" id="index-5">
203 <span id="id2"></span><h2>トレースライブラリの改善<a class="headerlink" href="#index-5" title="このヘッドラインへのパーマリンク">¶</a></h2>
204 <p>トレースライブラリの更新により、デバッガのブレークポイントで “callstack” 命令を利用できるようになりました。</p>
205 <p>この命令は関数のコールスタックを表示します。</p>
207 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"tracelib.ring"</span>
209 <span class="k">func</span> <span class="n">main</span>
210 <span class="o">?</span> <span class="s">"Hello from main!"</span>
211 <span class="n">test1</span><span class="p">()</span>
213 <span class="k">func</span> <span class="n">test1</span>
214 <span class="o">?</span> <span class="s">"Hello from test1!"</span>
215 <span class="n">test2</span><span class="p">()</span>
217 <span class="k">func</span> <span class="n">test2</span>
218 <span class="o">?</span> <span class="s">"Hello from test2!"</span>
219 <span class="n">test3</span><span class="p">()</span>
221 <span class="k">func</span> <span class="n">test3</span>
222 <span class="o">?</span> <span class="s">"Hello from test3!"</span>
223 <span class="n">breakpoint</span><span class="p">()</span>
226 <img alt="コールスタック" src="_images/callstack.png" />
228 <div class="section" id="ring">
229 <span id="index-6"></span><h2>Ring ノートパッドの改善<a class="headerlink" href="#ring" title="このヘッドラインへのパーマリンク">¶</a></h2>
230 <p>Ring ノートパッドを更新しました。</p>
231 <ol class="arabic simple">
232 <li>拡張子 *.cf への対応</li>
233 <li>ハッシュ関数 (SHA256) 使用時の改善 - “Save Changes?” (変更を保存しますか?) メッセージ</li>
234 <li>Ring ノートパッド - ×ボタン - Saving Changes? で問い合わせるようになりました。</li>
237 <div class="section" id="ringqt">
238 <span id="index-7"></span><h2>RingQt の改善<a class="headerlink" href="#ringqt" title="このヘッドラインへのパーマリンク">¶</a></h2>
239 <p>このクラスを RingQt へ追加しました。</p>
240 <ol class="arabic simple">
241 <li>QStackedWidget</li>
242 <li>QCalendarWidget</li>
243 <li>QOpenGLFunctions</li>
244 <li>QOpenGLContext</li>
245 <li>QSurfaceFormat</li>
246 <li>QOpenGLWidget</li>
247 <li>QOpenGLVersionProfile</li>
248 <li>QOpenGLFunctions_3_2_Core</li>
254 <li>QOpenGLPaintDevice</li>
255 <li>QPaintDevice</li>
256 <li>QOpenGLTimerQuery</li>
257 <li>QOpenGLDebugLogger</li>
258 <li>QOpenGLFramebufferObject</li>
259 <li>QOpenGLVertexArrayObject</li>
260 <li>QOpenGLBuffer</li>
261 <li>QOpenGLShaderProgram</li>
262 <li>QOpenGLShader</li>
263 <li>QOpenGLTexture</li>
266 <div class="section" id="ring2exe">
267 <span id="index-8"></span><h2>Ring2EXE の改善<a class="headerlink" href="#ring2exe" title="このヘッドラインへのパーマリンク">¶</a></h2>
268 <p>C/C++ コンパイラがないとき、想定された動作を行うために Ring2EXE を更新しました。</p>
269 <p>これにより、アプリケーションの配布に適したものを生成できます (exe ファイルと ring ファイル)。</p>
271 <div class="section" id="ringzip">
272 <span id="index-9"></span><h2>RingZip の改善<a class="headerlink" href="#ringzip" title="このヘッドラインへのパーマリンク">¶</a></h2>
273 <p>このライブラリの更新により、サブフォルダにあるファイルの展開に対応しました!</p>
275 <div class="section" id="index-10">
276 <span id="id3"></span><h2>取扱説明書の改訂<a class="headerlink" href="#index-10" title="このヘッドラインへのパーマリンク">¶</a></h2>
277 <ol class="arabic simple">
278 <li>RingQt クラスの章 - クラスリストの並べ替えを行いました。</li>
281 <div class="section" id="ring-vm">
282 <span id="index-11"></span><h2>Ring VM の改善<a class="headerlink" href="#ring-vm" title="このヘッドラインへのパーマリンク">¶</a></h2>
283 <ol class="arabic simple">
285 <li>List2Str() 関数で数値を有するリストに対応</li>
286 <li>分離記号 _ のある数値の対応を修正</li>
287 <li>変数を使用せずにリストを作成 (ステートメント –> 式 –> リスト)</li>
288 <li>isNULL() - 英数大小文字同一視 - Null および null は NULL と同等に扱われます。</li>
289 <li>このオブジェクトで属性に Self オブジェクトの追加へ対応</li>
290 <li>‘:’ 演算子を使用後に小文字リテラルのキーワードを作成</li>
291 <li>オブジェクトの表示 - decimals() 関数の考慮</li>
292 <li>定数を閉られていない場合 - 定数の始点を決定</li>
293 <li>リストのあるオブジェクトの表示時におけるエラーメッセージの改善</li>
294 <li>VarPtr() - ローカルスコープにある変数のポインタの取得に対応</li>
295 <li>新しいスレッドの作成時に perfomance 命令を normal 命令へ交換</li>
298 <div class="section" id="ringlibuv">
299 <span id="index-12"></span><h2>RingLibuv 拡張機能<a class="headerlink" href="#ringlibuv" title="このヘッドラインへのパーマリンク">¶</a></h2>
300 <p>Ring 1.7 から RingLibuv 拡張機能を利用できるようなりました。</p>
301 <p>Libuv は非同期 I/O に主眼を置いたマルチプラットフォーム対応ライブラリです。</p>
303 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libuv.ring"</span>
305 <span class="n">counter</span> <span class="o">=</span> <span class="mi">0</span>
306 <span class="n">idler</span> <span class="o">=</span> <span class="kp">NULL</span>
308 <span class="k">func</span> <span class="n">main</span>
309 <span class="n">idler</span> <span class="o">=</span> <span class="n">new_uv_idle_t</span><span class="p">()</span>
310 <span class="n">uv_idle_init</span><span class="p">(</span><span class="n">uv_default_loop</span><span class="p">(),</span> <span class="n">idler</span><span class="p">)</span>
311 <span class="n">uv_idle_start</span><span class="p">(</span><span class="n">idler</span><span class="p">,</span> <span class="s">"wait()"</span><span class="p">)</span>
312 <span class="o">?</span> <span class="s">"Idling..."</span>
313 <span class="n">uv_run</span><span class="p">(</span><span class="n">uv_default_loop</span><span class="p">(),</span> <span class="n">UV_RUN_DEFAULT</span><span class="p">);</span>
314 <span class="n">uv_loop_close</span><span class="p">(</span><span class="n">uv_default_loop</span><span class="p">());</span>
315 <span class="n">destroy_uv_idle_t</span><span class="p">(</span><span class="n">idler</span><span class="p">)</span>
317 <span class="k">func</span> <span class="n">wait</span>
318 <span class="n">counter</span><span class="o">++</span>
319 <span class="k">if</span> <span class="n">counter</span> <span class="o">>=</span> <span class="mi">100000</span>
320 <span class="n">uv_idle_stop</span><span class="p">(</span><span class="n">idler</span><span class="p">)</span>
321 <span class="k">ok</span>
325 <div class="highlight-none"><div class="highlight"><pre>Idling...
329 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libuv.ring"</span>
330 <span class="k">load</span> <span class="s">"objectslib.ring"</span>
332 <span class="o">?</span> <span class="s">"Testing RingLibuv - Server Side - Using Classes"</span>
334 <span class="n">open_object</span><span class="p">(:</span><span class="n">MyServer</span><span class="p">)</span>
336 <span class="k">class</span> <span class="n">MyServer</span> <span class="k">from</span> <span class="n">ObjectControllerParent</span>
338 <span class="n">DEFAULT_PORT</span> <span class="o">=</span> <span class="mi">13370</span>
339 <span class="n">DEFAULT_BACKLOG</span> <span class="o">=</span> <span class="mi">1024</span>
341 <span class="n">addr</span> <span class="o">=</span> <span class="n">new_sockaddr_in</span><span class="p">()</span>
342 <span class="n">server</span> <span class="o">=</span> <span class="kp">NULL</span>
343 <span class="n">client</span> <span class="o">=</span> <span class="kp">NULL</span>
344 <span class="n">myloop</span> <span class="o">=</span> <span class="kp">NULL</span>
346 <span class="k">func</span> <span class="n">start</span>
347 <span class="n">myloop</span> <span class="o">=</span> <span class="n">uv_default_loop</span><span class="p">()</span>
348 <span class="n">server</span> <span class="o">=</span> <span class="n">new_uv_tcp_t</span><span class="p">()</span>
349 <span class="n">uv_tcp_init</span><span class="p">(</span><span class="n">myloop</span><span class="p">,</span> <span class="n">server</span><span class="p">)</span>
350 <span class="n">uv_ip4_addr</span><span class="p">(</span><span class="s">"127.0.0.1"</span><span class="p">,</span> <span class="n">DEFAULT_PORT</span><span class="p">,</span> <span class="n">addr</span><span class="p">)</span>
351 <span class="n">uv_tcp_bind</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
352 <span class="n">r</span> <span class="o">=</span> <span class="n">uv_listen</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">DEFAULT_BACKLOG</span><span class="p">,</span> <span class="n">Method</span><span class="p">(:</span><span class="n">newconnection</span><span class="p">)</span> <span class="p">)</span>
353 <span class="k">if</span> <span class="n">r</span>
354 <span class="o">?</span> <span class="s">"Listen error "</span> <span class="o">+</span> <span class="n">uv_strerror</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
355 <span class="k">return</span> <span class="mi">1</span>
356 <span class="k">ok</span>
357 <span class="n">uv_run</span><span class="p">(</span><span class="n">myloop</span><span class="p">,</span> <span class="n">UV_RUN_DEFAULT</span><span class="p">)</span>
358 <span class="n">destroy_uv_tcp_t</span><span class="p">(</span><span class="n">server</span><span class="p">)</span>
359 <span class="n">destroy_uv_sockaddr_in</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span>
361 <span class="k">func</span> <span class="n">newconnection</span>
362 <span class="o">?</span> <span class="s">"New Connection"</span>
363 <span class="n">aPara</span> <span class="o">=</span> <span class="n">uv_Eventpara</span><span class="p">(</span><span class="n">server</span><span class="p">,:</span><span class="n">connect</span><span class="p">)</span>
364 <span class="n">nStatus</span> <span class="o">=</span> <span class="n">aPara</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span>
365 <span class="k">if</span> <span class="n">nStatus</span> <span class="o"><</span> <span class="mi">0</span>
366 <span class="o">?</span> <span class="s">"New connection error : "</span> <span class="o">+</span> <span class="n">nStatus</span>
367 <span class="k">return</span>
368 <span class="k">ok</span>
369 <span class="n">client</span> <span class="o">=</span> <span class="n">new_uv_tcp_t</span><span class="p">()</span>
370 <span class="n">uv_tcp_init</span><span class="p">(</span><span class="n">myloop</span><span class="p">,</span> <span class="n">client</span><span class="p">)</span>
371 <span class="k">if</span> <span class="n">uv_accept</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">client</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span>
372 <span class="n">uv_read_start</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">uv_myalloccallback</span><span class="p">(),</span>
373 <span class="n">Method</span><span class="p">(:</span><span class="n">echo_read</span><span class="p">))</span>
374 <span class="k">ok</span>
376 <span class="k">func</span> <span class="n">echo_read</span>
377 <span class="n">aPara</span> <span class="o">=</span> <span class="n">uv_Eventpara</span><span class="p">(</span><span class="n">client</span><span class="p">,:</span><span class="n">read</span><span class="p">)</span>
378 <span class="n">nRead</span> <span class="o">=</span> <span class="n">aPara</span><span class="o">[</span><span class="mi">2</span><span class="o">]</span>
379 <span class="n">buf</span> <span class="o">=</span> <span class="n">aPara</span><span class="o">[</span><span class="mi">3</span><span class="o">]</span>
380 <span class="k">if</span> <span class="n">nRead</span> <span class="o">></span> <span class="mi">0</span>
381 <span class="n">req</span> <span class="o">=</span> <span class="n">new_uv_write_t</span><span class="p">()</span>
382 <span class="n">wrbuf</span> <span class="o">=</span> <span class="n">uv_buf_init</span><span class="p">(</span><span class="n">get_uv_buf_t_base</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n">nread</span><span class="p">)</span>
383 <span class="n">uv_write</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">client</span><span class="p">,</span> <span class="n">wrbuf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">Method</span><span class="p">(:</span><span class="n">echo_write</span><span class="p">))</span>
384 <span class="o">?</span> <span class="n">uv_buf2str</span><span class="p">(</span><span class="n">wrbuf</span><span class="p">)</span>
385 <span class="n">message</span> <span class="o">=</span> <span class="s">"message from the server to the client"</span>
386 <span class="n">buf</span> <span class="o">=</span> <span class="n">new_uv_buf_t</span><span class="p">()</span>
387 <span class="n">set_uv_buf_t_len</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="n">len</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
388 <span class="n">set_uv_buf_t_base</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="n">varptr</span><span class="p">(</span><span class="s">"message"</span><span class="p">,</span><span class="s">"char *"</span><span class="p">))</span>
389 <span class="n">uv_write</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">client</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">Method</span><span class="p">(:</span><span class="n">echo_write</span><span class="p">))</span>
390 <span class="k">ok</span>
392 <span class="k">func</span> <span class="n">echo_write</span>
393 <span class="n">aPara</span> <span class="o">=</span> <span class="n">uv_Eventpara</span><span class="p">(</span><span class="n">client</span><span class="p">,:</span><span class="n">read</span><span class="p">)</span>
394 <span class="n">req</span> <span class="o">=</span> <span class="n">aPara</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span>
398 <p>クライアントを実行すると、 “New Connection” メッセージが表示されます。</p>
399 <p>そして “hello from the client” メッセージが表示されます。</p>
400 <div class="highlight-none"><div class="highlight"><pre>Testing RingLibuv - Server Side - Using Classes
402 hello from the client
406 <div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">"libuv.ring"</span>
407 <span class="k">load</span> <span class="s">"objectslib.ring"</span>
409 <span class="o">?</span> <span class="s">"Testing RingLibuv - Threads - Using Classes"</span>
411 <span class="n">open_object</span><span class="p">(:</span><span class="n">MyThreads</span><span class="p">)</span>
413 <span class="k">class</span> <span class="n">MyThreads</span> <span class="k">from</span> <span class="n">ObjectControllerParent</span>
415 <span class="k">func</span> <span class="n">Start</span>
416 <span class="n">one_id</span> <span class="o">=</span> <span class="n">new_uv_thread_t</span><span class="p">()</span>
417 <span class="n">two_id</span> <span class="o">=</span> <span class="n">new_uv_thread_t</span><span class="p">()</span>
418 <span class="n">uv_thread_create</span><span class="p">(</span><span class="n">one_id</span><span class="p">,</span> <span class="n">Method</span><span class="p">(:</span><span class="n">One</span><span class="p">))</span>
419 <span class="n">uv_thread_create</span><span class="p">(</span><span class="n">two_id</span><span class="p">,</span> <span class="n">Method</span><span class="p">(:</span><span class="n">Two</span><span class="p">))</span>
420 <span class="n">uv_thread_join</span><span class="p">(</span><span class="n">one_id</span><span class="p">)</span>
421 <span class="n">uv_thread_join</span><span class="p">(</span><span class="n">two_id</span><span class="p">)</span>
422 <span class="n">destroy_uv_thread_t</span><span class="p">(</span><span class="n">one_id</span><span class="p">)</span>
423 <span class="n">destroy_uv_thread_t</span><span class="p">(</span><span class="n">two_id</span><span class="p">)</span>
425 <span class="k">func</span> <span class="n">one</span>
426 <span class="o">?</span> <span class="s">"Message from the First Thread!"</span>
428 <span class="k">func</span> <span class="n">Two</span>
429 <span class="o">?</span> <span class="s">"Message from the Second Thread!"</span>
433 <div class="highlight-none"><div class="highlight"><pre>Testing RingLibuv - Threads - Using Classes
434 Message from the First Thread!
435 Message from the Second Thread!
438 <p>この拡張機能 (RingLibuv) の詳細情報は、この章をご確認ください: RingLibuv の用法</p>
446 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
447 <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
449 <li><a class="reference internal" href="#">Ring 1.7 の変更履歴</a><ul>
450 <li><a class="reference internal" href="#index-1">新機能と変更リスト</a></li>
451 <li><a class="reference internal" href="#load-package">新しい命令: Load Package</a></li>
452 <li><a class="reference internal" href="#ringvm-see-ringvm-give">ringvm_see() と ringvm_give() 関数</a></li>
453 <li><a class="reference internal" href="#ring-state-new-ring-state-mainfile">ring_state_new() と ring_state_mainfile() 関数</a></li>
454 <li><a class="reference internal" href="#index-5">トレースライブラリの改善</a></li>
455 <li><a class="reference internal" href="#ring">Ring ノートパッドの改善</a></li>
456 <li><a class="reference internal" href="#ringqt">RingQt の改善</a></li>
457 <li><a class="reference internal" href="#ring2exe">Ring2EXE の改善</a></li>
458 <li><a class="reference internal" href="#ringzip">RingZip の改善</a></li>
459 <li><a class="reference internal" href="#index-10">取扱説明書の改訂</a></li>
460 <li><a class="reference internal" href="#ring-vm">Ring VM の改善</a></li>
461 <li><a class="reference internal" href="#ringlibuv">RingLibuv 拡張機能</a></li>
468 <p class="topless"><a href="whatisnew8.html"
469 title="前の章へ">Ring 1.8 の変更履歴</a></p>
471 <p class="topless"><a href="whatisnew6.html"
472 title="次の章へ">Ring 1.6 の変更履歴</a></p>
473 <div role="note" aria-label="source link">
475 <ul class="this-page-menu">
476 <li><a href="_sources/whatisnew7.txt"
477 rel="nofollow">ソースコードを表示</a></li>
481 <form action="search.html" method="get">
482 <input type="text" name="q" placeholder="Search" />
483 <input type="hidden" name="check_keywords" value="yes" />
484 <input type="hidden" name="area" value="default" />
489 <div class="clearer"></div>
491 <footer class="footer">
492 <p class="pull-right">
493 <a href="_sources/whatisnew7.txt"
494 rel="nofollow">ソースコードを表示</a>
495 <a href="#">冒頭へ戻る</a></p>
497 © Copyright 2016-2020, Ring Team.<br/>
498 Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6 / astropy-sphinx-theme 1.1 (isVowel)