Skip to content

Instantly share code, notes, and snippets.

@milseman
milseman / offset_no_range_phantom.swift
Created May 3, 2019 22:25
Broken: Offset Indexing, Existing ranges, Phantom typed
// TODO: doc
public struct OffsetBound<Bound> {
internal enum Kind {
case fromStart(Int)
case fromEnd(Int)
}
internal var kind: Kind
public init(fromStart: Int) {
self.kind = .fromStart(fromStart)
@milseman
milseman / offset_indexing_no_range.swift
Created May 3, 2019 21:28
Offset Indexing, only OffsetBound
// TODO: doc
public struct OffsetBound {
internal enum Kind {
case fromStart(Int)
case fromEnd(Int)
}
internal var kind: Kind
public init(fromStart: Int) {
self.kind = .fromStart(fromStart)
@milseman
milseman / offset_indexing_phantom_xwu.swift
Last active May 3, 2019 00:21
Offset Indexing, using phantom-typed OffsetRange
// TODO: doc
public struct OffsetBound<Bound> {
internal enum Kind {
case fromStart(Int)
case fromEnd(Int)
}
internal var kind: Kind
public init(fromStart: Int) {
self.kind = .fromStart(fromStart)
@milseman
milseman / offset_indexing_xwu.swift
Created May 2, 2019 22:45
Offset Indexing, using OffsetRange
// TODO: doc
public struct OffsetBound {
internal enum Kind {
case fromStart(Int)
case fromEnd(Int)
}
internal var kind: Kind
init(fromStart: Int) {
self.kind = .fromStart(fromStart)
@milseman
milseman / offset_indexing_arrow_operator.swift
Created April 30, 2019 20:41
Offset Indexing, with arrow operators instead
precedencegroup RelativeOffsetPrecedence {
higherThan: RangeFormationPrecedence
}
infix operator --> : RelativeOffsetPrecedence
infix operator <-- : RelativeOffsetPrecedence
prefix operator -->
postfix operator <--
extension Collection {
@milseman
milseman / offset_indexing.swift
Last active April 30, 2019 00:13
Offset Indexing
precedencegroup RelativeOffsetPrecedence {
higherThan: RangeFormationPrecedence
}
infix operator ++ : RelativeOffsetPrecedence
infix operator -- : RelativeOffsetPrecedence
extension Collection {
internal func _clampedIndex(_ idx: Index, offsetBy offset: Int) -> Index {
let limit = offset < 0 ? startIndex : endIndex
@milseman
milseman / magic_caret.swift
Created April 17, 2019 19:28
Magic Caret
prefix operator ^
public prefix func ^<T>(_ t: T) -> T? { return .some(t) }
//
// Numbers
//
@milseman
milseman / string_index_explicit_offsets.swift
Last active January 29, 2019 21:39
String Index Explicit Offsets
extension String.Index {
/// Creates a new index at the specified UTF-16 code unit offset
///
/// - Parameter offset: An offset in UTF-16 code units.
public init(offset: Int, within utf16: String.UTF16View) {
let (start, end) = (utf16.startIndex, utf16.endIndex)
guard offset >= 0,
let idx = utf16.index(start, offsetBy: offset, limitedBy: end)
else {
self = end
@milseman
milseman / malloc_size.md
Created October 23, 2018 14:44
Malloc size experiment
var i = 0
while i <= 0x4_0000 { 
  let size = malloc_size(malloc(i+1)) 
  print(" \(i+1) => \(size) (\(size - i))") 
  i = size 
}

64-bit MacOS:

@milseman
milseman / substring_benchmark.swift
Last active October 15, 2018 00:19
Extracted from Substring.swift benchmark
print("start")
public var i = 0
// @inline(never)
// public func blackHole<T>(_ x: T) {
// i += 1
// }
@inline(never)