<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unit.git/src/ruby, branch 1.22.0-1</title>
<subtitle>Universal Web Application Server</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/'/>
<entry>
<title>Ruby: fixed crash on thread start.</title>
<updated>2020-12-07T18:17:25+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2020-12-07T18:17:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=d3796d1fb7008629a8fa505481dab96efe60cbdb'/>
<id>d3796d1fb7008629a8fa505481dab96efe60cbdb</id>
<content type='text'>
Ruby threads need to be created with GVL; otherwise, an attempt to access
locked resources may occur, causing a crash.

The issue was occasionally reproduced on Ubuntu 18.04 with Ruby 2.5.1
while running test_ruby_application_threads.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ruby threads need to be created with GVL; otherwise, an attempt to access
locked resources may occur, causing a crash.

The issue was occasionally reproduced on Ubuntu 18.04 with Ruby 2.5.1
while running test_ruby_application_threads.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ruby: error checking during thread creation.</title>
<updated>2020-11-05T14:02:55+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2020-11-05T14:02:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=2220b8258f116d12f9cf6eb4133f41ec374b75f5'/>
<id>2220b8258f116d12f9cf6eb4133f41ec374b75f5</id>
<content type='text'>
Application terminates in case of thread creation failure.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Application terminates in case of thread creation failure.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ruby: request processing in multiple threads.</title>
<updated>2020-11-05T09:45:10+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2020-11-05T09:45:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=b6475df79cd14d80c794abfc9d1edbcebbe86f2c'/>
<id>b6475df79cd14d80c794abfc9d1edbcebbe86f2c</id>
<content type='text'>
This closes #482 issue on GitHub.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This closes #482 issue on GitHub.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ruby: reusing static constant references to string objects.</title>
<updated>2020-11-05T09:45:08+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2020-11-05T09:45:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=9f8b746e776031e6eef6dea84c8dafbb8c24c725'/>
<id>9f8b746e776031e6eef6dea84c8dafbb8c24c725</id>
<content type='text'>
This shall save a couple of CPU cycles in request processing.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This shall save a couple of CPU cycles in request processing.
</pre>
</div>
</content>
</entry>
<entry>
<title>Isolation: fixed the generation of mounts table.</title>
<updated>2020-07-31T11:21:21+00:00</updated>
<author>
<name>Tiago Natel de Moura</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2020-07-31T11:21:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=b28b4459b0899cb8357df5f6c1e904fd1a34ebe3'/>
<id>b28b4459b0899cb8357df5f6c1e904fd1a34ebe3</id>
<content type='text'>
Since the introduction of rootfs feature, some language modules
can't be configured multiple times.

Now the configure generates a separate nxt_&lt;module&gt;_mounts.h for
each module compiled.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since the introduction of rootfs feature, some language modules
can't be configured multiple times.

Now the configure generates a separate nxt_&lt;module&gt;_mounts.h for
each module compiled.
</pre>
</div>
</content>
</entry>
<entry>
<title>Isolation: fixed build when features aren't detected.</title>
<updated>2020-06-23T11:11:27+00:00</updated>
<author>
<name>Tiago Natel de Moura</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2020-06-23T11:11:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=f8ba5d6c0093090e81819481e523af5fd27ab1e3'/>
<id>f8ba5d6c0093090e81819481e523af5fd27ab1e3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Added "rootfs" feature.</title>
<updated>2020-05-28T13:57:41+00:00</updated>
<author>
<name>Tiago Natel de Moura</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2020-05-28T13:57:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=e2b53e16c60ba1e3bbbe59172c184e97f889326b'/>
<id>e2b53e16c60ba1e3bbbe59172c184e97f889326b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor of process management.</title>
<updated>2020-03-09T16:28:25+00:00</updated>
<author>
<name>Tiago Natel de Moura</name>
<email>t.nateldemoura@f5.com</email>
</author>
<published>2020-03-09T16:28:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=e9e5ddd5a5d9ce99768833137eac2551a710becf'/>
<id>e9e5ddd5a5d9ce99768833137eac2551a710becf</id>
<content type='text'>
The process abstraction has changed to:

  setup(task, process)
  start(task, process_data)
  prefork(task, process, mp)

The prefork() occurs in the main process right before fork.

The file src/nxt_main_process.c is completely free of process
specific logic.

The creation of a process now supports a PROCESS_CREATED state.  The
The setup() function of each process can set its state to either
created or ready.  If created, a MSG_PROCESS_CREATED is sent to main
process, where external setup can be done (required for rootfs under
container).

The core processes (discovery, controller and router) doesn't need
external setup, then they all proceeds to their start() function
straight away.

In the case of applications, the load of the module happens at the
process setup() time and The module's init() function has changed
to be the start() of the process.

The module API has changed to:

  setup(task, process, conf)
  start(task, data)

As a direct benefit of the PROCESS_CREATED message, the clone(2) of
processes using pid namespaces now doesn't need to create a pipe
to make the child block until parent setup uid/gid mappings nor it
needs to receive the child pid.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The process abstraction has changed to:

  setup(task, process)
  start(task, process_data)
  prefork(task, process, mp)

The prefork() occurs in the main process right before fork.

The file src/nxt_main_process.c is completely free of process
specific logic.

The creation of a process now supports a PROCESS_CREATED state.  The
The setup() function of each process can set its state to either
created or ready.  If created, a MSG_PROCESS_CREATED is sent to main
process, where external setup can be done (required for rootfs under
container).

The core processes (discovery, controller and router) doesn't need
external setup, then they all proceeds to their start() function
straight away.

In the case of applications, the load of the module happens at the
process setup() time and The module's init() function has changed
to be the start() of the process.

The module API has changed to:

  setup(task, process, conf)
  start(task, data)

As a direct benefit of the PROCESS_CREATED message, the clone(2) of
processes using pid namespaces now doesn't need to create a pipe
to make the child block until parent setup uid/gid mappings nor it
needs to receive the child pid.
</pre>
</div>
</content>
</entry>
<entry>
<title>Introducing readline function in libunit.</title>
<updated>2020-03-12T14:54:05+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2020-03-12T14:54:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=2454dfe876c7d761aa46f972addd3e7c97bb8d68'/>
<id>2454dfe876c7d761aa46f972addd3e7c97bb8d68</id>
<content type='text'>
Ruby and Java modules now use this function instead of own
implementations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ruby and Java modules now use this function instead of own
implementations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ruby: changing callback functions prototype for v2.7.</title>
<updated>2020-01-28T13:59:12+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2020-01-28T13:59:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=2f8b243fa466b68eb657119d612075bffeea364e'/>
<id>2f8b243fa466b68eb657119d612075bffeea364e</id>
<content type='text'>
This closes #371 issue on GitHub.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This closes #371 issue on GitHub.
</pre>
</div>
</content>
</entry>
</feed>
