merge from ruby trunk