# binaries

Published articles for binaries.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Codename One Compiles Java and Kotlin Apps to Native Windows Executables Without a JVM

DevFeed: [Codename One Compiles Java and Kotlin Apps to Native Windows Executables Without a JVM](<https://devfeed.tech/articles/java-to-a-native-windows-exe-no-jvm-5mb-x64-and-arm-19396.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/native-windows-port-no-jvm/>)

Author: Shai Almog

Published: 2026-06-15T00:00:00Z

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [win32](<https://devfeed.tech/topics/win32.md>), [Arm](<https://devfeed.tech/topics/arm.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [java](<https://devfeed.tech/tags/java.md>), [native](<https://devfeed.tech/tags/native.md>), [win32](<https://devfeed.tech/tags/win32.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

Codename One's new Windows port uses the ParparVM pipeline to compile Java and Kotlin bytecode into standalone native Win32 executables without bundling or installing a JVM. The build targets both x64 and arm64 Windows systems.

### Source excerpt

The new native Windows port compiles your Java to a standalone Win32 executable through ParparVM, Direct2D, and DirectWrite. No JVM, no bundled runtime, a 5MB hello world, and both x64 and arm64 from one build.

## The Road to Component Model 1.0

DevFeed: [The Road to Component Model 1.0](<https://devfeed.tech/articles/the-road-to-component-model-1-0-15140.md>)

Original publisher: [Read original article](<https://bytecodealliance.org/articles/the-road-to-component-model-1-0>)

Author: Eric Gregory

Published: 2026-06-08T00:00:00Z

Content type: article

Language: en

Sources: [Bytecode Alliance](<https://devfeed.tech/sources/bytecode-alliance.md>)

Topics: [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [wasm](<https://devfeed.tech/topics/wasm.md>), [browser](<https://devfeed.tech/topics/browser.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [async](<https://devfeed.tech/tags/async.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [browser](<https://devfeed.tech/tags/browser.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [polyfill](<https://devfeed.tech/tags/polyfill.md>), [production](<https://devfeed.tech/tags/production.md>), [wasi](<https://devfeed.tech/tags/wasi.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

This article explains the path toward a stable, formally specified WebAssembly Component Model 1.0. It reviews how the Component Model and WASI relate, describes the Component Model as a foundational layer with WASI providing system-resource interfaces, and notes that both are already used in production while their specifications continue to evolve.

### Source excerpt

WASI P3 is almost here, bringing native async support to the WebAssembly System Interface (WASI) and Component Model. In this post, we're looking to the next big milestone: a stable, formally specified Component Model 1.0. At February's Bytecode Alliance Plumbers Summit, Luke Wagner and Alex Crichton gave a preview of what the path to a stable 1.0 actually looks like. At Wasm I/O 2026 in Barcelona in March, Luke expanded on that vision. So let's take a look at where the Component Model is heading.

## wastrel milestone: full hoot support, with generational gc as a treat

DevFeed: [wastrel milestone: full hoot support, with generational gc as a treat](<https://devfeed.tech/articles/wastrel-milestone-full-hoot-support-with-generational-gc-as-a-treat-35036.md>)

Original publisher: [Read original article](<https://wingolog.org/archives/2026/04/09/wastrel-milestone-full-hoot-support-with-generational-gc-as-a-treat>)

Author: Andy Wingo

Published: 2026-04-09T13:48:04Z

Content type: article

Language: en

Sources: [wingolog](<https://devfeed.tech/sources/wingolog.md>)

Topics: [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [scheme](<https://devfeed.tech/topics/scheme.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [gcc](<https://devfeed.tech/topics/gcc.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [garbage-collection](<https://devfeed.tech/tags/garbage-collection.md>), [gc](<https://devfeed.tech/tags/gc.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [hoot](<https://devfeed.tech/tags/hoot.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [repl](<https://devfeed.tech/tags/repl.md>), [scheme](<https://devfeed.tech/tags/scheme.md>), [spidermonkey](<https://devfeed.tech/tags/spidermonkey.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [treats](<https://devfeed.tech/tags/treats.md>), [v8](<https://devfeed.tech/tags/v8.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [wastrel](<https://devfeed.tech/tags/wastrel.md>), [web](<https://devfeed.tech/tags/web.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

The article describes a Wastrel milestone: compiling WebAssembly files produced by the Hoot Scheme toolchain into native binaries, including a console-based read-eval-print loop. It covers the build process, runtime modules, binary size, dependencies, and initial performance observations.

### Source excerpt

Hear ye, hear ye: Wastrel and Hoot means REPL! Which is to say, Wastrel can now make native binaries out of WebAssembly files as produced by the Hoot Scheme toolchain, up to and including a full read-eval-print loop. Like the REPL on the Hoot web page, but instead of requiring a browser, you can just run it on your console. Amazing stuff! try it at home First, we need the latest Hoot. Build it from source, then compile a simple REPL: echo '(import (hoot repl)) (spawn-repl)' > repl.scm ./pre-inst-env hoot compile -fruntime-modules -o repl.wasm repl.scm This takes about a minute. The resulting wasm file has a pretty full standard library including a full macro expander and evaluator. Normally Hoot would do some aggressive tree-shaking to discard any definitions not used by the program, but with a REPL we don't know what we might need. So, we pass -fruntime-modules to instruct Hoot to record all modules and their bindings in a central registry, so they can be looked up at run-time. This results in a 6.6 MB Wasm file; with tree-shaking we would have been at 1.2 MB. Next, build Wastrel from source, and compile our new repl.wasm: wastrel compile -o repl repl.wasm This takes about 5 minutes on my machine: about 3 minutes to generate all the C, about 6.6MLOC all in all, split into a couple hundred files of about 30KLOC each, and then 2 minutes to compile with GCC and link-time optimization (parallelised over 32 cores in my case). I have some ideas to golf the first part down a bit, but the the GCC side will resist improvements. Finally, the moment of truth: $ ./repl Hoot 0.8.0 Enter `,help' for help. (hoot user)> "hello, world!" => "hello, world!" (hoot user)> statics When I first got the REPL working last week, I gasped out loud: it's alive, it's alive!!! Now that some days have passed, I am finally able to look a bit more dispassionately at where we're at. Firstly, let's look at the compiled binary itself. By default, Wastrel passes the -g flag to GCC, which results in bi

## Why building from source matters

DevFeed: [Why building from source matters](<https://devfeed.tech/articles/why-building-from-source-matters-13326.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/why-building-from-source-matters>)

Published: 2025-11-13T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard](<https://devfeed.tech/topics/chainguard.md>), [open-source-security](<https://devfeed.tech/topics/open-source-security.md>), [Security](<https://devfeed.tech/topics/security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Software](<https://devfeed.tech/topics/software.md>), [Library](<https://devfeed.tech/topics/library.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [virtual machines](<https://devfeed.tech/topics/virtual-machines.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [building](<https://devfeed.tech/tags/building.md>), [building-from-source-approach](<https://devfeed.tech/tags/building-from-source-approach.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [chainguard-libraries](<https://devfeed.tech/tags/chainguard-libraries.md>), [chainguard-open-source](<https://devfeed.tech/tags/chainguard-open-source.md>), [chainguard-os](<https://devfeed.tech/tags/chainguard-os.md>), [chainguard-vms](<https://devfeed.tech/tags/chainguard-vms.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [sealed](<https://devfeed.tech/tags/sealed.md>), [security](<https://devfeed.tech/tags/security.md>), [signing](<https://devfeed.tech/tags/signing.md>), [source](<https://devfeed.tech/tags/source.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [trust](<https://devfeed.tech/tags/trust.md>)

### AI overview

Chainguard explains why building software from upstream source code can improve control and traceability in software supply chains. The article describes compiling packages and dependencies in a hermetic, network-isolated environment, then signing and attesting the resulting artifacts.

### Source excerpt

Chainguard SVP of Engineering Dustin Kirkland discusses why Chainguard builds every package, library, and image directly from source and why the approach works.

## Understanding Apple Debug Info

DevFeed: [Understanding Apple Debug Info](<https://devfeed.tech/articles/understanding-apple-debug-info-25412.md>)

Original publisher: [Read original article](<https://smileykeith.com/2025/09/21/understanding-apple-debug-info/>)

Author: Keith Smiley

Published: 2025-09-21T17:00:00Z

Content type: tutorial

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [C](<https://devfeed.tech/topics/c.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [build](<https://devfeed.tech/tags/build.md>), [c](<https://devfeed.tech/tags/c.md>), [clang](<https://devfeed.tech/tags/clang.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [debug](<https://devfeed.tech/tags/debug.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [ios](<https://devfeed.tech/tags/ios.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [macos](<https://devfeed.tech/tags/macos.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article explains how debug information works for Apple platforms and Mach-O binaries, contrasting the approach with Linux ELF binaries. It shows how compiler-generated debug metadata is stored in intermediate object files and located by lldb, then introduces issues that can arise in complex or distributed Bazel builds, including invalid absolute paths.

### Source excerpt

Apple platforms (macOS, iOS, etc), and specifically Mach-O binaries, have a slightly different approach to debug info than ELF binaries for Linux. If you are familiar with Xcode, you might have seen a few related settings that control what is produced and wondered what the trade-offs are. The goal of this post is to help you debug cases where these differences lead to a degraded debugging experience in lldb so that you can fix them. If you have a particularly complex build, potentially managed by Bazel1 or another tool, especially if you are using distributed builds, you are even more likely to hit issues. Let's dive in to how the pieces fit together. A brief explanation of debug info Debug info is metadata produced by the compiler that is consumed by debuggers (like lldb), profilers, and other tools. It is used to map runtime information, like addresses, function arguments, and stack traces, back to the source that was used to produce the binary. Without this information debugging in lldb shows primarily raw instructions and addresses, which is rarely acceptable for common debugging workflows. Inspecting debug info When building for Apple platforms debug info isn't contained in the final binary (this is the primary difference from the default Linux workflows). Instead the binary contains references to the files where lldb can find it (this is conceptually similar to if you use -gsplit-dwarf on Linux). Let's inspect some binaries to see what this really means. First we create a small binary: $ cat main.c int main() { return 0; } $ clang main.c -g -c -o main.o $ clang main.o -o main If we attempt to inspect the debug info contained in main, we find nothing: $ dwarfdump main # use llvm-dwarfdump if not on macOS main: file format Mach-O arm64 .debug_info contents: However when we debug this binary in lldb, you will correctly see the source file and line number information: $ lldb -- main (lldb) target create "main" Current executable set to '/tmp/demo/main' (arm64). (l

## Building GoReleaser: from shell script to paid product

DevFeed: [Building GoReleaser: from shell script to paid product](<https://devfeed.tech/articles/building-goreleaser-from-shell-script-to-paid-product-37684.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/building-goreleaser/>)

Author: Carlos Alexandro Becker

Published: 2025-07-19T00:00:00Z

Content type: article

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Automation](<https://devfeed.tech/topics/automation.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [automation](<https://devfeed.tech/tags/automation.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [building](<https://devfeed.tech/tags/building.md>), [github](<https://devfeed.tech/tags/github.md>), [go](<https://devfeed.tech/tags/go.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [shell-script](<https://devfeed.tech/tags/shell-script.md>)

### AI overview

The article recounts the history of GoReleaser, a YAML-configured release automation tool that builds binaries, creates archives and packages, publishes releases, pushes installers, and signs artifacts. It describes the tool's evolution from a shell script into a Go project and its early adoption by open-source developers.

### Source excerpt

In this post, I want to share the history behind GoReleaser, how we got here, lessons I've learned along the way, and what's ahead.

## How to use a project-specific Maven repository when dependency downloads fail

DevFeed: [How to use a project-specific Maven repository when dependency downloads fail](<https://devfeed.tech/articles/don-t-let-maven-block-you-25588.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2025/ublock-maven/>)

Author: Marco Gomiero

Published: 2025-01-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [Maven](<https://devfeed.tech/topics/maven.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [build](<https://devfeed.tech/tags/build.md>), [ci](<https://devfeed.tech/tags/ci.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [incident](<https://devfeed.tech/tags/incident.md>), [maven](<https://devfeed.tech/tags/maven.md>)

### AI overview

This tutorial explains how to keep a project building when a Maven repository is unavailable or a dependency can no longer be downloaded. It shows how to create a project-specific local Maven repository, recover the dependency binary from the Gradle cache when available, and configure Gradle to use the local repository for that library.

### Source excerpt

As developers, we've all encountered build failures in CI (or on our local machines) due to Maven repository issues preventing dependency downloads. > Could not download foo-lib-1.0.aar (org.acme.foo:foo-lib:1.0) > Could not get resource 'https://mavenrepo.com/org/acme/foo/foo-lib/1.0/foo-lib-1.0.aar'. > Could not GET 'https://mavenrepo.com/org/acme/foo/foo-lib/1.0/foo-lib-1.0.aar'. Received status code 403 from server: There could be many reasons for this: the Maven repository is currently down or is having an incident, the repository has been shut down (hello, JCenter), and the dependency is old and not republished elsewhere.

## KMMBridge 1.0 Release - Kevin Galligan

DevFeed: [KMMBridge 1.0 Release - Kevin Galligan](<https://devfeed.tech/articles/kmmbridge-1-0-release-kevin-galligan-38245.md>)

Original publisher: [Read original article](<https://touchlab.co/kmmbridge-v1>)

Published: 2024-08-28T00:00:00Z

Content type: release

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [release](<https://devfeed.tech/tags/release.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tool](<https://devfeed.tech/tags/tool.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

KMMBridge 1.0.0 simplifies publishing Kotlin Multiplatform XCFramework binaries for iOS, with a primary focus on Swift Package Manager. CocoaPods remains supported, while the templates and tutorials are SPM-only.

### Source excerpt

KMMBridge is a tool that helps you publish iOS XCFramework binaries from Kotlin Mutliplatform. The tool has seen multiple iterations over the past few years. This version simplifies the configuration and usage of KMMBridge, with a primary focus on Swift Package Manager (SPM).

## How to switch between multiple ESP32 firmware binaries stored in the flash memory

DevFeed: [How to switch between multiple ESP32 firmware binaries stored in the flash memory](<https://devfeed.tech/articles/how-to-switch-between-multiple-esp32-firmware-binaries-stored-in-the-flash-memory-13963.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/switch-between-firmware-binaries/>)

Author: John Lee

Published: 2024-07-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32](<https://devfeed.tech/topics/esp32.md>), [Microcontroller](<https://devfeed.tech/topics/microcontroller.md>), [Embedded Software Dev](<https://devfeed.tech/topics/embedded-software-dev.md>), [Internet of things](<https://devfeed.tech/topics/iot.md>), [ESP32-S3](<https://devfeed.tech/topics/esp32-s3.md>), [m5stack](<https://devfeed.tech/topics/m5stack.md>), [Wokwi](<https://devfeed.tech/topics/wokwi.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [blog](<https://devfeed.tech/tags/blog.md>), [boot](<https://devfeed.tech/tags/boot.md>), [bootloader](<https://devfeed.tech/tags/bootloader.md>), [bsp](<https://devfeed.tech/tags/bsp.md>), [build](<https://devfeed.tech/tags/build.md>), [code](<https://devfeed.tech/tags/code.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-p4](<https://devfeed.tech/tags/esp32-p4.md>), [esp32-s3](<https://devfeed.tech/tags/esp32-s3.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [flash](<https://devfeed.tech/tags/flash.md>), [gui](<https://devfeed.tech/tags/gui.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [iot](<https://devfeed.tech/tags/iot.md>), [m5stack](<https://devfeed.tech/tags/m5stack.md>), [memory](<https://devfeed.tech/tags/memory.md>), [ota](<https://devfeed.tech/tags/ota.md>), [partition](<https://devfeed.tech/tags/partition.md>), [quick-start](<https://devfeed.tech/tags/quick-start.md>), [releases](<https://devfeed.tech/tags/releases.md>), [simulation](<https://devfeed.tech/tags/simulation.md>), [wokwi](<https://devfeed.tech/tags/wokwi.md>)

### AI overview

A tutorial on using the ESP32 Graphical Bootloader to store multiple firmware images in flash memory and switch between them. It explains the bootloader flow, partition-table configuration, and steps for building, merging, flashing, and simulating the application.

### Source excerpt

Introduction# The ESP32 microcontroller is a versatile and powerful device, widely used in IoT and embedded applications. One of its advanced features is the ability to store multiple firmware images in its flash memory and switch between them. This capability can be leveraged for various purposes, such as testing different firmware versions, running multiple applications, or maintaining a backup firmware.

## Teleport Community Edition will adopt a commercial license starting with version 16

DevFeed: [Teleport Community Edition will adopt a commercial license starting with version 16](<https://devfeed.tech/articles/teleport-community-edition-will-adopt-a-commercial-license-starting-with-version-16-29913.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/teleport-community-license/>)

Author: sasha@goteleport.com (Alexander Klizhentas)

Published: 2024-03-08T00:00:00Z

Content type: article

Language: en

Sources: [Teleport](<https://devfeed.tech/sources/teleport.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [amazon](<https://devfeed.tech/tags/amazon.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [software-license](<https://devfeed.tech/tags/software-license.md>)

### AI overview

Teleport Community Edition will move compiled binaries, container images, and Amazon Machine Images from the Apache 2.0 license to a commercial license starting with version 16. Personal and hobby use remains unrestricted, while larger companies must contact sales. The source repository remains under AGPLv3, and pre-version-16 assets retain Apache 2.0 licensing.

### Source excerpt

A detailed explanation, schedule, and FAQ on why we have switched Teleport Community Edition to a commercial software license.

## Building a macOS screen saver in Kotlin

DevFeed: [Building a macOS screen saver in Kotlin](<https://devfeed.tech/articles/building-a-macos-screen-saver-in-kotlin-27054.md>)

Original publisher: [Read original article](<https://zsmb.co/building-a-macos-screen-saver-in-kotlin/>)

Author: Márton Braun

Published: 2024-03-05T12:00:00Z

Content type: tutorial

Language: en

Sources: [zsmb.co](<https://devfeed.tech/sources/zsmb-co.md>)

Topics: [kotlin-multiplatform-libraries](<https://devfeed.tech/topics/kotlin-multiplatform-libraries.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Code](<https://devfeed.tech/topics/code.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [build](<https://devfeed.tech/tags/build.md>), [code](<https://devfeed.tech/tags/code.md>), [contributions](<https://devfeed.tech/tags/contributions.md>), [development](<https://devfeed.tech/tags/development.md>), [github](<https://devfeed.tech/tags/github.md>), [installation](<https://devfeed.tech/tags/installation.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [macos](<https://devfeed.tech/tags/macos.md>), [marton-braun](<https://devfeed.tech/tags/marton-braun.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [zsmb](<https://devfeed.tech/tags/zsmb.md>), [zsmb-co](<https://devfeed.tech/tags/zsmb-co.md>), [zsmb13](<https://devfeed.tech/tags/zsmb13.md>), [zsmbco](<https://devfeed.tech/tags/zsmbco.md>)

### AI overview

This tutorial documents the creation of a custom macOS screen saver built almost entirely in Kotlin with Kotlin Multiplatform. It covers customization options, release binaries, installation, and the challenges of working with macOS screen saver APIs and interoperability.

### Source excerpt

This article documents how I created my own custom screen saver for macOS, built almost entirely in Kotlin, using the powers of Kotlin Multiplatform compiled to macOS. Join me for a tale of Kotlin success and macOS failures.

## Teleport OSS will relicense to AGPLv3

DevFeed: [Teleport OSS will relicense to AGPLv3](<https://devfeed.tech/articles/teleport-oss-will-relicense-to-agplv3-29924.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/teleport-oss-switches-to-agpl-v3/>)

Author: sasha@goteleport.com (Alexander Klizhentas)

Published: 2023-12-01T00:00:00Z

Content type: release

Language: en

Sources: [Teleport](<https://devfeed.tech/sources/teleport.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Software](<https://devfeed.tech/topics/software.md>), [Code](<https://devfeed.tech/topics/code.md>), [client library](<https://devfeed.tech/topics/client-library.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [change](<https://devfeed.tech/tags/change.md>), [client-library](<https://devfeed.tech/tags/client-library.md>), [container](<https://devfeed.tech/tags/container.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [oss](<https://devfeed.tech/tags/oss.md>), [software](<https://devfeed.tech/tags/software.md>), [software-license](<https://devfeed.tech/tags/software-license.md>)

### AI overview

Teleport announced that its core repository source code would switch from the Apache 2.0 license to AGPLv3 on December 1, 2023. Documentation, company-compiled OSS binaries, and client libraries would remain under Apache 2.0, while enterprise binaries would continue under a commercial license.

### Source excerpt

A detailed explanation, schedule, and FAQ on why we have switched Teleport OSS to AGPLv3 software license.

## KMP Team Workflows with KMMBridge - Kevin Galligan

DevFeed: [KMP Team Workflows with KMMBridge - Kevin Galligan](<https://devfeed.tech/articles/kmp-team-workflows-with-kmmbridge-kevin-galligan-38244.md>)

Original publisher: [Read original article](<https://touchlab.co/kmmbridge-team-workflows>)

Published: 2023-10-06T10:00:28Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [kotlin-multiplatform-libraries](<https://devfeed.tech/topics/kotlin-multiplatform-libraries.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Template](<https://devfeed.tech/topics/template.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [build](<https://devfeed.tech/tags/build.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [project](<https://devfeed.tech/tags/project.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article explains how KMMBridge supports Kotlin Multiplatform team workflows by assembling and publishing Xcode Framework binaries for distribution through Swift Package Manager, CocoaPods, or private repositories. It also introduces a Quick Start template for publishing Android and iOS binaries.

### Source excerpt

Team workflows with Kotlin Multiplatform vary in structure. KMMBridge is a tool that allows you to publish Xcode Framework binaries from Kotlin that can be distributed, for your team internally, or to outside developers.

## Run My Code! (code injection on Windows)

DevFeed: [Run My Code! (code injection on Windows)](<https://devfeed.tech/articles/run-my-code-code-injection-on-windows-39725.md>)

Original publisher: [Read original article](<https://www.timdbg.com/posts/run-my-code/>)

Author: Tim Misiak

Published: 2023-08-27T22:13:28Z

Content type: tutorial

Language: en

Sources: [TimDbg](<https://devfeed.tech/sources/timdbg.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [buffer-overflow](<https://devfeed.tech/tags/buffer-overflow.md>), [code](<https://devfeed.tech/tags/code.md>), [processes](<https://devfeed.tech/tags/processes.md>), [programming](<https://devfeed.tech/tags/programming.md>), [windbg](<https://devfeed.tech/tags/windbg.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This article explains code injection on Windows, focusing on ways to run code inside another process without relying on a security vulnerability. It introduces static injection through patching, DLL injection, and dynamic code injection, and discusses drawbacks of modifying binaries on disk, including effects on repeated runs and code signing.

### Source excerpt

The first time I realized it was possible to get a process to run some extra little code I had written, it felt like the ultimate cheat code. My first attempt was a little patch for Civilization 2 to fix some high CPU usage. Then I discovered that you could inject code at run-time. And when I discovered the ability to change how OS functions worked, it started to feel like I could do anything!

## Fully bootstrapping Go from source in Wolfi

DevFeed: [Fully bootstrapping Go from source in Wolfi](<https://devfeed.tech/articles/fully-bootstrapping-go-from-source-in-wolfi-13053.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/fully-bootstrapping-go-from-source-in-wolfi>)

Published: 2023-08-11T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Go](<https://devfeed.tech/topics/go.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [gcc](<https://devfeed.tech/topics/gcc.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [backdoor](<https://devfeed.tech/topics/backdoor.md>)

Tags: [backdoor](<https://devfeed.tech/tags/backdoor.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [bootstrapping](<https://devfeed.tech/tags/bootstrapping.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [go](<https://devfeed.tech/tags/go.md>), [provenance](<https://devfeed.tech/tags/provenance.md>), [source](<https://devfeed.tech/tags/source.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

The article explains how to fully bootstrap Go from source in Wolfi to improve provenance and reduce trust risks associated with pre-built binaries. It describes using the C++-based gcc-go or gollvm implementations to build the official Go toolchain without requiring an existing Go compiler.

### Source excerpt

Dive into fully bootstrapping Go from source in Wolfi, paving the way for secure, independent development.

## Installing Age Encryption Tool

DevFeed: [Installing Age Encryption Tool](<https://devfeed.tech/articles/installing-age-encryption-tool-10575.md>)

Original publisher: [Read original article](<https://technotim.com/posts/install-age/>)

Author: Techno Tim

Published: 2023-01-30T15:00:00Z

Content type: tutorial

Language: en

Sources: [Techno Tim](<https://devfeed.tech/sources/techno-tim.md>)

Topics: [Encryption](<https://devfeed.tech/topics/encryption.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [download](<https://devfeed.tech/tags/download.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [github](<https://devfeed.tech/tags/github.md>), [library](<https://devfeed.tech/tags/library.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [utilities](<https://devfeed.tech/tags/utilities.md>)

### AI overview

A tutorial for installing age, a modern file-encryption tool, format, and Go library. It describes downloading the latest release, extracting and moving the binaries, testing the installation, and uninstalling it.

### Source excerpt

What is Age? age is a simple, modern and secure file encryption tool, format, and Go library. It features small explicit keys, no config options, and UNIX-style composability.It is commonly used in tandem with Mozilla SOPS.It's open source and you can read more about it on the GitHub repo. Looking for a tutorial on how use this? Checkout this video on how to use SOPS and Age for your Git Repo...

## Introducing KMMBridge for Teams

DevFeed: [Introducing KMMBridge for Teams](<https://devfeed.tech/articles/introducing-kmmbridge-for-teams-25947.md>)

Original publisher: [Read original article](<https://medium.com/@kpgalligan/introducing-kmmbridge-for-teams-da825da42e81?source=rss-c2f810aa7890------2>)

Author: Kevin Galligan

Published: 2022-10-10T20:10:44Z

Content type: release

Language: en

Sources: [Stories by Kevin Galligan on Medium](<https://devfeed.tech/sources/stories-by-kevin-galligan-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [build-tools](<https://devfeed.tech/tags/build-tools.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

Touchlab announces KMMBridge, part of its Faktory tooling suite, to help mobile teams publish and consume pre-built Kotlin Multiplatform Mobile Xcode Framework binaries as an internal SDK. The article explains the Internal SDK Flow, in which a team member or CI builds and publishes the framework so iOS developers can integrate it without building Kotlin locally.

### Source excerpt

Today we are announcing KMMBridge, part of Touchlab's new Faktory* tooling suite. This set of build tools allows mobile teams to successfully publish shared code faster than ever with Kotlin Multiplatform Mobile. Specifically targeted at iOS publishing, teams can now implement the Internal SDK Flow approach, today's best practice to quickly integrate KMM into production app builds. GitHub - touchlab/KMMBridge: KMMBridge is a set of Gradle tooling that facilitates publishing and consuming pre-built KMM (Kotlin Multiplatform Mobile) Xcode Framework binaries. See https://touchlab.github.io/KMMBridge/intro/ to get started. KMMBridge allows teams to publish and integrate Kotlin Multiplatform Mobile (KMM) Xcode Frameworks as an internal SDK.When you're ready to get started, head to our KMMBridge Quick Start Tutorial.Why We Built a Team-Focused Tool Touchlab has spent years working with teams at different stages of their Kotlin Multiplatform journey. Evaluating KMP, putting KMP into production, and yes, even a fair bit of time talking to teams who looked at KMP and decided against it. One of the key lessons we've learned seems obvious in retrospect. Different types of teams work in different ways. Of course, every team is different. Every situation will be different. However, there are common patterns. Out of the box, the KMP and the Kotlin/Native toolkit will let you build an Xcode Framework, then integrate it locally into your Xcode project. This works well if everybody on the team builds Kotlin. And in an ideal world, everybody would be able to build Kotlin. But in the real world, most teams who have succeeded followed the Internal SDK Flow approach. The Internal SDK Flow Approach As with adopting any technology on a team, early wins help build momentum and confidence so the team can unlock the full potential over time. The Internal SDK Flow has emerged as the best practice to get faster ROI when adopting KMM. At its simplest, this approach means the Kotlin Xcode Framew

## Symbol and Binary Indexing

DevFeed: [Symbol and Binary Indexing](<https://devfeed.tech/articles/symbol-and-binary-indexing-39727.md>)

Original publisher: [Read original article](<https://www.timdbg.com/posts/symbol-indexing/>)

Author: Tim Misiak

Published: 2022-08-10T15:30:09Z

Content type: tutorial

Language: en

Sources: [TimDbg](<https://devfeed.tech/sources/timdbg.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Visual Studio](<https://devfeed.tech/topics/visual-studio.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [debug](<https://devfeed.tech/tags/debug.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [files](<https://devfeed.tech/tags/files.md>), [symbols](<https://devfeed.tech/tags/symbols.md>), [windbg](<https://devfeed.tech/tags/windbg.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This article explains why WinDbg debugging benefits from indexing both symbols and binaries. Symbols provide names, type definitions, and source files, while indexed binaries help debuggers reconstruct missing module data and perform reliable stack walking, especially when analyzing crash dumps from another machine.

### Source excerpt

Symbol indexing is one of those features of WinDbg that can make things "just work" in a way that seems like magic. But it can also be the most painful things when it goes wrong. Why should I index symbols and binaries? Most of us have tried to debug without symbols at one point, and it can quickly become an exercise in frustration. It's much more productive to debug an executable where you have symbols because it gives you function names, variable names, type definitions, and source files.

## Remote debugging

DevFeed: [Remote debugging](<https://devfeed.tech/articles/remote-debugging-39741.md>)

Original publisher: [Read original article](<https://www.timdbg.com/remote-debugging/>)

Author: Tim Misiak

Published: 2022-08-05T14:00:00Z

Content type: tutorial

Language: en

Sources: [TimDbg](<https://devfeed.tech/sources/timdbg.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [Development](<https://devfeed.tech/topics/development.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Server](<https://devfeed.tech/topics/server.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [development](<https://devfeed.tech/tags/development.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [os](<https://devfeed.tech/tags/os.md>), [remote](<https://devfeed.tech/tags/remote.md>), [server](<https://devfeed.tech/tags/server.md>), [symbols](<https://devfeed.tech/tags/symbols.md>), [windbg](<https://devfeed.tech/tags/windbg.md>)

### AI overview

This tutorial explains how to set up remote debugging with WinDbg and NTSD. It defines target and host terminology, compares NTSD/CDB with DbgSrv, and explains how debugger logic, binaries, symbols, memory, registers, and debugging events are distributed between machines.

### Source excerpt

A key feature of WinDbg and NTSD is the ability to debug a target "remotely" from a separate computer. For kernel debugging, this is often the only way to debug, since the entire OS is "frozen" when broken into a kernel debugger. Remote debugging is also available for usermode debugging, and is often just as useful. Sometimes it's useful because the target that you are testing on is different from the one you are using for development.

## New Red binaries

DevFeed: [New Red binaries](<https://devfeed.tech/articles/new-red-binaries-22381.md>)

Original publisher: [Read original article](<https://www.red-lang.org/2022/07/new-red-binaries.html>)

Author: Nenad Rakocevic (noreply@blogger.com)

Published: 2022-07-29T16:18:00Z

Content type: release

Language: en

Sources: [Red](<https://devfeed.tech/sources/red.md>)

Topics: [Red](<https://devfeed.tech/topics/red.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [GUI](<https://devfeed.tech/topics/gui.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [cli](<https://devfeed.tech/tags/cli.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [console](<https://devfeed.tech/tags/console.md>), [download](<https://devfeed.tech/tags/download.md>), [gui](<https://devfeed.tech/tags/gui.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

Red introduces separate pre-built binaries for its GUI console, CLI console, and toolchain to reduce first-use delays. The project is temporarily dropping semantic versioning before version 1.0 and will primarily provide binaries for the latest commit.

### Source excerpt

Since many years, we are offering pre-built binaries for the Red toolchain, as a more convenient way to use Red, even if it is not strictly needed, as Red can be run from its sources, the toolchain being run by a Rebol2 interpreter. As the Red REPL and toolchain are not run by the same engine, the console (REPL) used to be compiled on first run of the `red` executable (when no arguments was provided or a Red script was passed). This resulted in a significant delay on the first use of the console (both for the GUI and CLI versions). We have now decided to change that by providing separate pre-built binaries for the consoles and toolchain. This is a temporary split until Red gets self-hosted, at which point we can recombine everything into a single binary. Another change is the temporary dropping of the semantic versioning until version 1.0 and related "stable" releases, as it seems to be too confusing to some users (Red being still in alpha stage). This also will remove a tendency from some users to care more about version increments than feature availability and work being done overall. We will now be proposing only pre-built binaries for latest commit, though older binaries will still be available if that can be of any help to anyone. So the pre-built binaries now are: Red GUI : Red interpreter + View + GUI console Red CLI : Red interpreter + CLI console Red Toolchain : Encapper for Red + Red/System compiler We are also considering ways to merge the GUI and CLI consoles into a single binary which can work even if no GUI API is available, falling back on CLI mode. We will also have the console(s) act as a front-end for the toolchain, even downloading it for you in the background when needed. Though for that we need a proper asynchronous `call` function implementation. More news about this soon. In the meantime, enjoy running Red consoles almost instantly from just a click on the Download page!

## Printing rpaths with objdump

DevFeed: [Printing rpaths with objdump](<https://devfeed.tech/articles/printing-rpaths-with-objdump-25409.md>)

Original publisher: [Read original article](<https://smileykeith.com/2022/03/16/objdump-rpaths/>)

Author: Keith Smiley

Published: 2022-03-16T17:00:00Z

Content type: tutorial

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [LLVM](<https://devfeed.tech/topics/llvm.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [commands](<https://devfeed.tech/tags/commands.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [macos](<https://devfeed.tech/tags/macos.md>), [swift](<https://devfeed.tech/tags/swift.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

The article explains how to inspect runtime library search paths in Mach-O binaries. It compares a verbose otool pipeline with the more concise LLVM objdump --macho --rpaths command, introduced with LLVM 13 and Xcode 13.3 on macOS.

### Source excerpt

MachO binaries contain load commands to indicate to dyld where it should search for the libraries the binary depends on. These paths are often useful to inspect when debugging why your binary isn't discovering the libraries you'd expect. Previously you could discover these with: % otool -l `xcrun -f swiftc` \ | grep -A2 LC_RPATH \ | grep "^\s*path" \ | cut -d " " -f 11 @executable_path/../lib/swift/macosx @executable_path/../lib/swift/macosx This example is quite verbose and fragile for such a common action, so recently I committed a change to add an easier option with LLVM's objdump. This change shipped with LLVM 13 or Xcode 13.3 on macOS, allowing you to run: % objdump --macho --rpaths `xcrun -f swiftc` /Applications/Xcode-13.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc: @executable_path/../lib/swift/macosx This is much more succinct and memorable, but also has slightly different output. This is because objdump automatically detects the current machine's architecture, and only prints the rpaths for that slice of the fat binary. It also outputs the path of the binary being run on, which you can disable with --no-leading-headers. Hopefully you find this as useful as I do!

## Building static Rust binaries for Linux

DevFeed: [Building static Rust binaries for Linux](<https://devfeed.tech/articles/building-static-rust-binaries-for-linux-38530.md>)

Original publisher: [Read original article](<https://msfjarvis.dev/posts/building-static-rust-binaries-for-linux/>)

Author: Harsh Shandilya

Published: 2021-10-17T06:30:00Z

Content type: tutorial

Language: en

Sources: [Posts on Harsh Shandilya](<https://devfeed.tech/sources/posts-on-harsh-shandilya.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [building](<https://devfeed.tech/tags/building.md>), [curl](<https://devfeed.tech/tags/curl.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [linux](<https://devfeed.tech/tags/linux.md>), [openssl](<https://devfeed.tech/tags/openssl.md>), [rust](<https://devfeed.tech/tags/rust.md>), [rust-build-static-binary](<https://devfeed.tech/tags/rust-build-static-binary.md>), [rust-static-binary](<https://devfeed.tech/tags/rust-static-binary.md>), [rust-static-linking](<https://devfeed.tech/tags/rust-static-linking.md>), [static](<https://devfeed.tech/tags/static.md>), [wasm](<https://devfeed.tech/tags/wasm.md>)

### AI overview

A tutorial on building statically linked Rust binaries for Linux. It explains static linking with MUSL and glibc, describes a Cargo-related issue, and shows how to identify and remove dependencies that require dynamic linking.

### Source excerpt

Some tips on building static binaries of Rust projects targeting Linux

## Reproducible codesigning on Apple Silicon

DevFeed: [Reproducible codesigning on Apple Silicon](<https://devfeed.tech/articles/reproducible-codesigning-on-apple-silicon-25405.md>)

Original publisher: [Read original article](<https://smileykeith.com/2021/10/05/codesign-m1/>)

Author: Keith Smiley

Published: 2021-10-06T03:00:00Z

Content type: article

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [Arm](<https://devfeed.tech/topics/arm.md>), [x86](<https://devfeed.tech/topics/x86.md>), [C](<https://devfeed.tech/topics/c.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [arm](<https://devfeed.tech/tags/arm.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [c](<https://devfeed.tech/tags/c.md>), [clang](<https://devfeed.tech/tags/clang.md>), [code](<https://devfeed.tech/tags/code.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [identifier](<https://devfeed.tech/tags/identifier.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [reproducible-builds](<https://devfeed.tech/tags/reproducible-builds.md>), [signing](<https://devfeed.tech/tags/signing.md>), [source](<https://devfeed.tech/tags/source.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

The article explains why codesigning universal macOS binaries can produce different results on Apple Silicon and Intel Macs, despite the binaries being identical before signing. It traces the issue through Apple's open-source code and identifies architecture-dependent UUID handling as the cause of non-reproducible codesigning.

### Source excerpt

For people who expect reproducible builds, Apple Silicon machines provide an interesting challenge. Apple Silicon requires arm64 binaries, including command line tools you build yourself, be codesigned. This change is mostly transparent to developers, because Apple updated their linker to automatically ad-hoc sign binaries1. Unfortunately, if you're interested in producing binaries that support both Intel Macs and Apple Silicon Macs, you likely want to produce a fat binary. When codesigning this binary you hit some behavior that depends on your current machine's architecture. Example You can consistently produce the same result across multiple machines when compiling a binary without signing it. Here's an example with a simple C program: $ echo "int main() { return 0; }" > main.c $ clang main.c -Wl,-no_adhoc_codesign -arch arm64 -arch x86_64 -o main $ shasum main 113033b3d9a247210b49a476bbfadb2e347846fe main The shasum of main should always be the same regardless of your host machine2. On Apple Silicon machines you can see this binary has the same sha1 even if you run clang under Rosetta 23: $ arch -x86_64 clang main.c -Wl,-no_adhoc_codesign -arch arm64 -arch x86_64 -o main $ shasum main 113033b3d9a247210b49a476bbfadb2e347846fe main The issue is introduced when you codesign the binary on Apple Silicon machines versus Intel machines. You can immediately see the difference3: $ codesign --force --sign - main $ shasum main 84631e812bd480c306766ba03a728dd2565dd672 main % arch -x86_64 codesign --force --sign - main % shasum main f631b6c0daf3ffd0bb5f65d19fa045acf447a72d main We get closer to identifying the problem when you compare the details of these differences: $ codesign --force --sign - main $ codesign -dvvv main > arm.txt 2>&1 $ arch -x86_64 codesign --force --sign - main $ codesign -dvvv main > intel.txt 2>&1 $ diff -Nur intel.txt arm.txt --- intel.txt 2021-10-05 21:26:32.731918710 -0700 +++ arm.txt 2021-10-05 21:26:29.473702845 -0700 @@ -1,14 +1,14 @@ Executable=/

## Using the new prebuilt builder on GoReleaser

DevFeed: [Using the new prebuilt builder on GoReleaser](<https://devfeed.tech/articles/using-the-new-prebuilt-builder-on-goreleaser-37759.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/goreleaser-prebuilt/>)

Author: Carlos Alexandro Becker

Published: 2021-09-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [import](<https://devfeed.tech/topics/import.md>), [builds](<https://devfeed.tech/topics/builds.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [build](<https://devfeed.tech/tags/build.md>), [import](<https://devfeed.tech/tags/import.md>), [performance](<https://devfeed.tech/tags/performance.md>), [split](<https://devfeed.tech/tags/split.md>)

### AI overview

GoReleaser adds support for importing pre-built binaries into its release process. The article explains using another build tool and splitting builds across multiple machines, including for performance or CGO-related reasons.

### Source excerpt

You can now import pre-built binaries into GoReleaser!

[Next page](<https://devfeed.tech/tags/binaries.md?cursor=WyIyMDIxLTA5LTEyVDAwOjAwOjAwKzAwOjAwIiwgIjdhMzFjNGE4LTEzYWMtNGMzNy04MWQ4LTNlNTA2NjY4ODUwOCJd>)