# \[ANN\] Tork 17.0.0

**URL:** <https://rubytalk.org/t/ann-tork-17-0-0/64700>\
**Category:** ruby-talk\
**Created:** [27 January 2012 08:23 UTC](https://rubytalk.org/t/ann-tork-17-0-0/64700 "2012-01-27T08:23:14Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Suraj\_Kurapati2](https://avatars.discourse-cdn.com/v4/letter/s/a5b964/32.png) [@Suraj\_Kurapati2](https://rubytalk.org/u/Suraj_Kurapati2)\
**Post date:** [27 January 2012 08:23 UTC](https://rubytalk.org/t/ann-tork-17-0-0/64700/1 "2012-01-27T08:23:14Z")

</div>

Tork - Test with fork - [GitHub - sunaku/tork: 💞 Tests your Ruby code, in parallel, as you change it](https://github.com/sunaku/tork#readme)

&nbsp;&nbsp;\_\_\_\_\_\_\_ \_\_\_\_\_\_\_  
&nbsp;&nbsp;&nbsp;\_\_\_ /\_\_\_\_\_\_\_\_\_\_\_ /\_\_  
&nbsp;&nbsp;&nbsp;&nbsp;\_ \_\_/ \_\_ \ \_\_/ /\_/  
&nbsp;&nbsp;&nbsp;&nbsp;/ /\_/ /\_/ / / / ,\  
&nbsp;&nbsp;&nbsp;&nbsp;\_\_/\_\_\_\_/\_/ /\_/|\_\

> **···**
>
> > > > ------\>
> 
> --------------------------------------------------------------------  
> What is it?  
> --------------------------------------------------------------------
> 
> Tork is a continuous testing tool for Ruby that automatically  
> detects and tests changes in your Ruby application or test suite  
> in an efficient manner:
> 
> &nbsp;&nbsp;1. Absorbs your test execution overhead into a master process.
> 
> &nbsp;&nbsp;2. Forks to run your test files in parallel; overhead inherited.
> 
> &nbsp;&nbsp;3. Avoids running unchanged tests inside changed test files.
> 
> --------------------------------------------------------------------  
> What is new?  
> --------------------------------------------------------------------
> 
> Breaking changes:
> 
> &nbsp;&nbsp;\* tork-herald(1) now emits batches of single-line JSON arrays instead  
> &nbsp;&nbsp;&nbsp;&nbsp;of printing one raw (non-JSON) path per line. This makes IPC  
> &nbsp;&nbsp;&nbsp;&nbsp;uniform across all Tork executables.
> 
> &nbsp;&nbsp;\* tork-master(1) now emits log\_file and worker\_number in status  
> &nbsp;&nbsp;&nbsp;&nbsp;messages.
> 
> &nbsp;&nbsp;\* The order of parameters for before/after fork hooks has been  
> &nbsp;&nbsp;&nbsp;&nbsp;changed to better reflect the order of items in tork-master(1)'s  
> &nbsp;&nbsp;&nbsp;&nbsp;status messages.
> 
> &nbsp;&nbsp;&nbsp;&nbsp;\* The old order was: worker\_number, log\_file, test\_file,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line\_numbers.
> 
> &nbsp;&nbsp;&nbsp;&nbsp;\* The new order is: test\_file, line\_numbers, log\_file,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;worker\_number.
> 
> New features:
> 
> &nbsp;&nbsp;\* GH-24: add `tork/config/dotlog` configuration helper to "hide" log  
> &nbsp;&nbsp;&nbsp;&nbsp;files. (Nicolas Fouché)
> 
> &nbsp;&nbsp;\* GH-25: add `tork/config/logdir` configuration helper to isolate log  
> &nbsp;&nbsp;&nbsp;&nbsp;files. (Jose Pablo Barrantes)
> 
> &nbsp;&nbsp;\* tork(1) now strips all whitespace from your input, in case you  
> &nbsp;&nbsp;&nbsp;&nbsp;pressed spacebar or tab a few times, by accident, before entering  
> &nbsp;&nbsp;&nbsp;&nbsp;your command.
> 
> Housekeeping:
> 
> &nbsp;&nbsp;\* tork/client: Replace write lock with queue to support SIGCHLD  
> &nbsp;&nbsp;&nbsp;&nbsp;handler.
> 
> &nbsp;&nbsp;&nbsp;&nbsp;The SIGCHLD handler in tork-master(1) can be triggered at any time,  
> &nbsp;&nbsp;&nbsp;&nbsp;even in the middle of writing to the standard output stream!  
> &nbsp;&nbsp;&nbsp;&nbsp;Locking access to the output stream in normal code (outside the  
> &nbsp;&nbsp;&nbsp;&nbsp;signal handler) would freeze the program because the signal  
> &nbsp;&nbsp;&nbsp;&nbsp;handler, waiting for the lock to be released, would never return!
> 
> &nbsp;&nbsp;&nbsp;&nbsp;One solution is to maintain a thread-safe queue of outgoing items  
> &nbsp;&nbsp;&nbsp;&nbsp;that need to be written to the output stream. Both normal code and  
> &nbsp;&nbsp;&nbsp;&nbsp;the signal handler can quickly push an outgoing item onto the queue  
> &nbsp;&nbsp;&nbsp;&nbsp;and proceed with their business. A separate thread can then have  
> &nbsp;&nbsp;&nbsp;&nbsp;the sole responsibility of (and access to) continually writing  
> &nbsp;&nbsp;&nbsp;&nbsp;those outgoing items to the output stream.
> 
> &nbsp;&nbsp;\* README: revise instructions, reorganize document, and other  
> &nbsp;&nbsp;&nbsp;&nbsp;improvements.
> 
> --  
> Writing software is more fun than working.
