<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Swift-Sgp4 on Calogero Sanfilippo</title><link>http://calogerosanfilippo.it/tags/swift-sgp4/</link><description>Recent content in Swift-Sgp4 on Calogero Sanfilippo</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 09 Nov 2025 08:23:45 +0100</lastBuildDate><atom:link href="http://calogerosanfilippo.it/tags/swift-sgp4/index.xml" rel="self" type="application/rss+xml"/><item><title>SGPKit 3.1.0 released</title><link>http://calogerosanfilippo.it/posts/sgpkit-310-released/</link><pubDate>Sun, 09 Nov 2025 08:23:45 +0100</pubDate><guid>http://calogerosanfilippo.it/posts/sgpkit-310-released/</guid><description>&lt;p&gt;A new version of SGPKit, &lt;strong&gt;3.1.0&lt;/strong&gt;, has been released.&lt;/p&gt;
&lt;p&gt;This new minor version introduces the conformance to Codable for the &lt;a href="https://swiftpackageindex.com/csanfilippo/swift-sgp4/3.1.0/documentation/sgpkit/tle" class="external-link" target="_blank" rel="noopener"&gt;TLE&lt;/a&gt; type. This allows easy serialization and deserialization of TLE objects.&lt;/p&gt;
&lt;h1 id="encoding"&gt;
 Encoding
 &lt;a class="heading-link" href="#encoding"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-swift" data-lang="swift"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;SGPKit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; tle = &lt;span style="color:#66d9ef"&gt;try&lt;/span&gt; TLE(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; title: &lt;span style="color:#e6db74"&gt;&amp;#34;ISS (ZARYA)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; firstLine: &lt;span style="color:#e6db74"&gt;&amp;#34;1 25544U 98067A 25312.54791667 .00016717 00000-0 10270-3 0 9006&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; secondLine: &lt;span style="color:#e6db74"&gt;&amp;#34;2 25544 51.6432 123.4567 0007417 234.5678 345.6789 15.50000012345678&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; encoder = TLEEncoder()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; data: Data = &lt;span style="color:#66d9ef"&gt;try&lt;/span&gt; encoder.encode(tle)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#34;Encoded TLE data: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;\(&lt;/span&gt;data&lt;span style="color:#e6db74"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="decoding"&gt;
 Decoding
 &lt;a class="heading-link" href="#decoding"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Decoding a single TLE is quite simple.&lt;/p&gt;</description></item><item><title>SGPKit 3.0.0 released</title><link>http://calogerosanfilippo.it/posts/sgpkit-300-released/</link><pubDate>Mon, 27 Oct 2025 22:04:55 +0100</pubDate><guid>http://calogerosanfilippo.it/posts/sgpkit-300-released/</guid><description>&lt;p&gt;Version &lt;strong&gt;3.0.0&lt;/strong&gt; of &lt;code&gt;swift-sgp4&lt;/code&gt; is now available.&lt;br&gt;
This release introduces support for &lt;strong&gt;Linux&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;, expahunding the library beyond Apple platforms.&lt;/p&gt;
&lt;h2 id="background"&gt;
 Background
 &lt;a class="heading-link" href="#background"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;swift-sgp4&lt;/code&gt; provides Swift bindings to the &lt;a href="https://github.com/dnwrnr/sgp4" class="external-link" target="_blank" rel="noopener"&gt;SGP4 orbital propagation library&lt;/a&gt;.&lt;br&gt;
Earlier versions relied on an Objective-C++ wrapper around the C++ implementation, which limited the project to iOS and macOS.&lt;/p&gt;
&lt;h2 id="what-changed"&gt;
 What Changed
 &lt;a class="heading-link" href="#what-changed"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Objective-C++ wrapper removed&lt;/strong&gt;&lt;br&gt;
The previous bridge was tied to Apple platforms and prevented portability.&lt;/p&gt;</description></item><item><title>SGPKit 1.3.1 released</title><link>http://calogerosanfilippo.it/posts/sgpkit-131-released/</link><pubDate>Tue, 21 Oct 2025 17:51:55 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/sgpkit-131-released/</guid><description>&lt;p&gt;Version &lt;strong&gt;1.3.1&lt;/strong&gt; of &lt;a href="https://github.com/csanfilippo/swift-sgp4" class="external-link" target="_blank" rel="noopener"&gt;SPGKit&lt;/a&gt; has been released.&lt;/p&gt;
&lt;p&gt;This update resolves a build configuration issue that affected projects using &lt;strong&gt;Swift 5.9&lt;/strong&gt;.&lt;br&gt;
In previous versions, the package failed to compile because the Swift Package Manager setup did not correctly handle the interoperability between Swift and C++ sources. As a result, users on Swift 5.9 encountered build errors when integrating the library.&lt;/p&gt;
&lt;p&gt;The fix applies the proper configuration for Swift/C++ interop, following the approach described in the &lt;a href="https://www.swift.org/documentation/cxx-interop/project-build-setup/" class="external-link" target="_blank" rel="noopener"&gt;Swift documentation&lt;/a&gt;. With this adjustment, the package now builds successfully on Swift 5.9 and later.&lt;/p&gt;</description></item><item><title>SGPKit 1.2.1 released</title><link>http://calogerosanfilippo.it/posts/sgpkit-121-released/</link><pubDate>Mon, 06 Oct 2025 22:35:24 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/sgpkit-121-released/</guid><description>&lt;p&gt;🚀 A new bugfix release of &lt;a href="https://github.com/csanfilippo/swift-sgp4" class="external-link" target="_blank" rel="noopener"&gt;SGPKit&lt;/a&gt; is now available: &lt;a href="https://github.com/csanfilippo/swift-sgp4/releases/tag/1.2.1" class="external-link" target="_blank" rel="noopener"&gt;v1.2.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This update adopts the latest upstream code from &lt;a href="https://github.com/dnwrnr/sgp4" class="external-link" target="_blank" rel="noopener"&gt;dnwrnr/sgp4&lt;/a&gt;, ensuring better alignment with the reference implementation.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re using SGPKit in your Swift-based satellite tracking or orbital analysis tools, it&amp;rsquo;s recommended to upgrade to 1.2.1 for improved reliability.&lt;/p&gt;
&lt;p&gt;For full details, check out the &lt;a href="https://github.com/csanfilippo/swift-sgp4/releases/tag/1.2.1" class="external-link" target="_blank" rel="noopener"&gt;release notes&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>swift-sgp4 on Swift Package Index</title><link>http://calogerosanfilippo.it/posts/sgpkit-spm-index/</link><pubDate>Sun, 10 Jul 2022 23:52:10 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/sgpkit-spm-index/</guid><description>&lt;p&gt;&lt;a href="https://github.com/csanfilippo/swift-sgp4" class="external-link" target="_blank" rel="noopener"&gt;swift-sgp4&lt;/a&gt; is available through &lt;a href="https://swiftpackageindex.com/csanfilippo/swift-sgp4" class="external-link" target="_blank" rel="noopener"&gt;Swift Package Index&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Swift Package Index is a search engine for packages that support the Swift Package Manager.&lt;/p&gt;</description></item><item><title>swift-sgp4 1.0.0 is here!</title><link>http://calogerosanfilippo.it/posts/sgpkit-released/</link><pubDate>Sun, 03 Jul 2022 23:52:10 +0200</pubDate><guid>http://calogerosanfilippo.it/posts/sgpkit-released/</guid><description>&lt;p&gt;Today I released the first open source version of &lt;a href="https://github.com/csanfilippo/swift-sgp4" class="external-link" target="_blank" rel="noopener"&gt;swift-sgp4&lt;/a&gt;, a very simple Swift Package that calculates the position of a satellite given a &lt;a href="https://en.wikipedia.org/wiki/Two-line_element_set" class="external-link" target="_blank" rel="noopener"&gt;two-line elements set (TLE)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The library wouldn&amp;rsquo;t have been possible without the fundamental help of &lt;a href="https://www.danrw.com/sgp4/" class="external-link" target="_blank" rel="noopener"&gt;sgp4&lt;/a&gt;, a satellite prediction C++ library developed by &lt;a href="https://github.com/dnwrnr" class="external-link" target="_blank" rel="noopener"&gt;Daniel Warner&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you may imagine, swift-sgp4 is the core of [ISSSeeker]({{ site.url }}/apps/issseeker).&lt;/p&gt;</description></item></channel></rss>