Skip to content

Instantly share code, notes, and snippets.

@kddnewton
kddnewton / bignums.rb
Created December 15, 2023 21:39
Bignums
View bignums.rb
# frozen_string_literal: true
class Number
SIZE = 32
attr_reader :values
def initialize(values = [0])
@values = values
end
@kddnewton
kddnewton / bug.rb
Created November 28, 2023 17:04
Maybe encoding bug?
View bug.rb
# frozen_string_literal: true
class Context < BasicObject
def method_missing(name, *) = :identifier
def self.const_missing(name) = :constant
end
$context = Context.new
def evaluate(encoding, codepoint)
@kddnewton
kddnewton / compile.js
Created November 13, 2023 19:07
Compile Prism into YARV in JavaScript
View compile.js
import * as prism from "@ruby/prism";
class RubyInteger {
constructor(value) {
this.value = value;
}
_plus(other) {
if (!(other instanceof RubyInteger)) {
throw new TypeError(`no implicit conversion of ${other.constructor.name} into Integer`);
@kddnewton
kddnewton / cached.rb
Created September 12, 2023 13:58
Cached lookup
View cached.rb
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem "activerecord", "~> 7.0.0"
gem "sqlite3"
end
@kddnewton
kddnewton / yarp_ast.rb
Last active August 28, 2023 18:32
Fetch YARP AST for a method
View yarp_ast.rb
require "yarp"
module YARPAST
def yarp_ast
ast =
begin
RubyVM::AbstractSyntaxTree.of(self, keep_script_lines: true)
rescue ArgumentError
end
@kddnewton
kddnewton / neon.c
Created August 28, 2023 17:50
Attempting to parse identifiers using NEON SIMD
View neon.c
#include <stdbool.h>
#include <stddef.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
// Each entry in this lookup table indicates whether a character is a valid
@kddnewton
kddnewton / assembler.rb
Created March 17, 2023 20:03
Using YARV assembler in Syntax Tree
View assembler.rb
putspecialobject 3
putnil
defineclass :FooBar, 0
definemethod :foo
putobject "FooBar#foo"
leave
definemethod :bar
putobject "class variable"
setclassvariable :@@bar
@kddnewton
kddnewton / json.rb
Last active August 7, 2023 19:54
Faster JSON parser in Ruby
View json.rb
# frozen_string_literal: true
require "bundler/inline"
gemfile do
source "https://rubygems.org"
gem "json_pure"
gem "benchmark-ips"
end
@kddnewton
kddnewton / index.rb
Last active December 22, 2022 20:42
Indexing classes/modules/methods
View index.rb
#!/usr/bin/env ruby
# frozen_string_literal: true
VM_DEFINECLASS_TYPE_CLASS = 0x00
VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01
VM_DEFINECLASS_TYPE_MODULE = 0x02
VM_DEFINECLASS_FLAG_SCOPED = 0x08
VM_DEFINECLASS_FLAG_HAS_SUPERCLASS = 0x10
def log(line, event, message)
@kddnewton
kddnewton / emoji.rb
Created December 1, 2022 15:11
Emoji encoding
View emoji.rb
def c2e(string) = string.chars.map { |char| [char.ord + 128000].pack("U") }.join
def e2c(string) = string.unpack("U*").pack("c*")
c2e("Hello, world!")
# => "👈👥👬👬👯🐬🐠👷👯👲👬👤🐡"
e2c("👈👥👬👬👯🐬🐠👷👯👲👬👤🐡")
# => "Hello, world!"
e2c(c2e("Hello, world!"))