Skip to content

Instantly share code, notes, and snippets.

View jfrolich's full-sized avatar
💭
ReasonML / Elixir

Jaap Frolich jfrolich

💭
ReasonML / Elixir
View GitHub Profile
@jfrolich
jfrolich / SPEC.md
Created May 6, 2026 20:09
Comptime

Comptime - Implementation Specification

Target audience: compiler engineers implementing compile-time metaprogramming in the ReScript compiler.

This document is the contract for the feature: surface syntax, cross-module artifacts, specialization semantics, type reflection, optional QuickJS evaluation, caching, and the limits required to keep compilation deterministic and debuggable.

@jfrolich
jfrolich / presentation.md
Created April 28, 2026 10:50
ReScript retreat 2026 presentation

Rescript 12

Last year Rescript 12 was released.

Big milestone. Finally feels like a mature language.

The thing I worked on, Rewatch was upstreamed. ReScript now has it's own bespoke build system and file watcher.

type t<'a> = Js.Promise.t<'a>
type error
@bs.new
external make: ((@bs.uncurry ~resolve: (. 'a) => unit, ~reject: (. exn) => unit) => unit) => t<'a> =
"Promise"
@bs.val @bs.scope("Promise") external resolve: 'a => t<'a> = "resolve"
@bs.val @bs.scope("Promise") external reject: exn => t<'a> = "reject"
@bs.val @bs.scope("Promise")
external all: array<t<'a>> => t<array<'a>> = "all"
@jfrolich
jfrolich / Reanimated.res
Created December 22, 2020 08:19
Reanimated2 Bindings
module Extrapolate = {
type t
@bs.scope(("default", "Extrapolate")) @bs.module("react-native-reanimated")
external extend: t = "EXTEND"
@bs.scope(("default", "Extrapolate")) @bs.module("react-native-reanimated")
external clamp: t = "CLAMP"
@bs.scope(("default", "Extrapolate")) @bs.module("react-native-reanimated")
external identity: t = "IDENTITY"
}
" Don't try to be vi compatible
set nocompatible
" Helps force plugins to load correctly when it is turned back on below
filetype off
call plug#begin("~/.vim/plugged")
Plug 'prettier/vim-prettier'
Plug 'elixir-editors/vim-elixir'
Plug 'slashmili/alchemist.vim'
(this.webpackJsonp=this.webpackJsonp||[]).push([[0],{1041:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,i.default)(e)};var n,o=r(1465),i=(n=o)&&n.__esModule?n:{default:n};e.exports=t.default},1042:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r,n,o){for(var i=0,a=e.length;i<a;++i){var s=e[i](t,r,n,o);if(s)return s}},e.exports=t.default},1043:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e instanceof Object&&!Array.isArray(e)},e.exports=t.default},1044:function(e,t,r){"use strict";function n(e,t){-1===e.indexOf(t)&&e.push(t)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(Array.isArray(t))for(var r=0,o=t.length;r<o;++r)n(e,t[r]);else n(e,t)},e.exports=t.default},1045:function(e,t,r){"use strict";t.__esModule=!0;var n=r(741),o={},i={},a=["Webkit","Moz","O","ms",""],s=a.length,u=void 0;t.default=function(e,t)
{
"metadata": {
"name": "",
"signature": "sha256:7dd98943a42a3b5dadac425cbc531b5432fa5b7a285c1822445d21393b63f47a"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
require 'net/http'
require 'nokogiri'
require 'wbw/exceptions'
module Wbw
class Client
attr_accessor :username, :session_id, :logged_in
def initialize params = {}
if params
# Add the libary directory to the LOAD_PATH
# this makes running the test as easy as just running script
PROJECT_ROOT = File.join(File.dirname(__FILE__),'..','..')
$LOAD_PATH.unshift(File.join(PROJECT_ROOT,'lib'))
require 'minitest/autorun'
require 'wbw/client'
require 'vcr'
require 'pry'
export PATH=~/bin:$PATH:
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad
PS1="\n\u:\w \[$EBLACK\]\$(vcprompt)\[$NO_COLOR\] \n→ "
# Colors from http://wiki.archlinux.org/index.php/Color_Bash_Prompt
# misc
NO_COLOR='\e[0m' #disable any colors
# regular colors
BLACK='\e[0;30m'