Ruby's (andPython's) lack ofparallelrunningthreadshas led to developerslooking atevent-basedandnon-blockingI/Osolutions as well asdistributing the workloadacrossOSprocesses.
As IPS technology evolved, and the number of signatures required for effective blocking grew, many IPS solutions incorporated signatures that are based on vulnerabilities instead of exploit.