lars / greiz-reinsdorf.de wrote: > However while implementing the [time decoder for pg](https://github.com/ged/ruby-pg/blob/master/ext/pg_text_decoder.c#L551-L715) I wished to have a fast version of: > > rb_funcall(rb_cTime, rb_intern("new"), 7, INT2NUM(year), INT2NUM(mon), INT2NUM(day), INT2NUM(hour), INT2NUM(min), sec_and_usec_rational, INT2NUM(gmt_offset)); > We have `rb_time_timespec_new(ts, offset)` since ruby-2.3, > which is more than 10 times faster than the above, but it > requires to convert the time to timespec first. This > conversion is pretty difficult and involves some less standard > functions (timegm() and mktime()) which didn't work as > expected on Windows and termix/Android. I think a better path would be to bundle timegm for systems without it. It avoid increasing the C-API footprint of Ruby and reduces the cognitive overhead for anybody reading the code. Unfortunately the Ruby community doesn't like GPL; since gnulib provides exactly the functionality required (and much more in terms of portability) in a well-organized repo: https://git.savannah.gnu.org/cgit/gnulib.git But at least for timegm, musl and any BSDs have it, too. Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>