fn class_new(vm: &mut VM, _: Value, args: &Args2) -> VMResult {
    args.check_args_range(0, 1)?;
    let superclass = if args.len() == 0 {
        BuiltinClass::object()
    } else {
        vm[0].expect_class("1st arg")?
    };
    let module = Module::class_under(superclass);
    let val = module.into();
    match &args.block {
        None => {}
        Some(block) => {
            let arg = Args::new1(val);
            let res = vm.eval_block_self(block, val, &arg);
            res?;
        }
    };
    Ok(val)
}
Create new class.
If a block is given, eval it in the context of newly created class.
args[0]: super class.
ruruby/src/builtin/class.rs