This is the tale of a long weekend spent uncovering a mysterious iOS 18 Neural Engine bug—a journey of problem-solving in a system where full visibility is elusive, especially in the locked-down world of Apple’s platforms. But the process I followed is a general approach you can use for any opaque system. It all began last week when I stumbled upon a strange behavior in my iOS app. The output generated from a CoreML model was completely broken—something I had never seen before. And after some digging, I realized this only happened when the model was running on the Neural Engine of iOS 18. The first step was triage. I implemented a quick workaround in the app: if the device is running iOS 18, switch from the Neural Engine to the GPU. This temporarily solved the issue, but I had no idea why it worked or whether other CoreML models in the app’s pipeline might also be affected. Without a deeper understanding of the root cause, I knew I cou
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'optparse' | |
require 'pathname' | |
def update_name(name, options) | |
pattern = /#{options[:rpath]}/ | |
if name =~ pattern | |
suffix = $' | |
if options[:path].join(suffix).exist? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Copyright (c) 2024 Yoshimasa Niwa | |
Permission is hereby granted, free of charge, to any person obtaining | |
a copy of this software and associated documentation files (the | |
"Software"), to deal in the Software without restriction, including | |
without limitation the rights to use, copy, modify, merge, publish, | |
distribute, sublicense, and/or sell copies of the Software, and to | |
permit persons to whom the Software is furnished to do so, subject to | |
the following conditions: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit 6ac1a2feb7143a8bc0e57af5c8dc57cbbb05d85f | |
Author: Yoshimasa Niwa <niw@niw.at> | |
Date: Fri Apr 19 22:14:55 2024 -0700 | |
wip | |
diff --git a/3_bidirectional_cxx_interop/include/fibonacci/fibonacci.h b/3_bidirectional_cxx_interop/include/fibonacci/fibonacci.h | |
index 911e7d7..ed3f909 100644 | |
--- a/3_bidirectional_cxx_interop/include/fibonacci/fibonacci.h | |
+++ b/3_bidirectional_cxx_interop/include/fibonacci/fibonacci.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import AppKit | |
import Foundation | |
final class MainView: NSView { | |
private let textView: NSTextView | |
override init(frame frameRect: NSRect) { | |
textView = NSTextView(usingTextLayoutManager: true) | |
super.init(frame: frameRect) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Usage | |
# ===== | |
# | |
# ## Prerequisite | |
# | |
# Prepare Python 3, for exmaple, install Homebrew and `brew install python`. | |
# | |
# ## Install dependencies | |
# | |
# $ python3 -m venv .venv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
extension String: Error {} | |
// MARK: - Parser Combinator | |
typealias ParserFunction<Element, Output> = | |
(any Collection<Element>) throws -> (Output, any Collection<Element>) | |
protocol Parser<Element, Output> { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
extension String: Error {} | |
// MARK: - Evaluation | |
enum Atom { | |
case symbol(String) | |
case number(Double) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import AppKit; | |
@import Foundation; | |
#include <stdio.h> | |
int main(int argc, char *argv[]) { | |
@try { | |
if (argc < 2) { | |
printf("Usage: %s [visual format for a 'view']\n", argv[0]); | |
return 0; |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
NewerOlder