Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
145462 stories
·
32 followers

Airlines Sell 5 Billion Plane Ticket Records To the Government For Warrantless Searching

1 Share
404 Media: A data broker owned by the country's major airlines, including American Airlines, United and Delta, is selling access to five billion plane ticketing records to the government for warrantless searching and monitoring of peoples' movements, including by the FBI, Secret Service, ICE, and many other agencies, according to a new contract and other records reviewed by 404 Media. The contract provides new insight into the scale of the sale of passengers' data by the Airlines Reporting Corporation (ARC), the airlines-owned data broker. The contract shows ARC's data includes information related to more than 270 carriers and is sourced through more than 12,800 travel agencies. ARC has previously told the government to not reveal to the public where this passenger data came from, which includes peoples' names, full flight itineraries, and financial details. "Americans' privacy rights shouldn't depend on whether they bought their tickets directly from the airline or via a travel agency. ARC's sale of data to U.S. government agencies is yet another example of why Congress needs to close the data broker loophole by passing my bipartisan bill, the Fourth Amendment Is Not For Sale Act," Senator Ron Wyden told 404 Media in a statement.

Read more of this story at Slashdot.

Read the whole story
alvinashcraft
21 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Meta leaks its new smart glasses with a display

1 Share

An unlisted and now-removed video from Meta showed off a new pair of Ray-Ban branded smart glasses with a display and a wristband to help control them, as reported by UploadVR. The video also features a new pair of wraparound “Sphaera” Oakley smart glasses with a camera on the nose, meaning that Meta itself may have inadvertently leaked two of its biggest announcements from its Connect event this week.

For the glasses with a display, the video includes branding that says “Meta | Ray-Ban” and “Display,” so perhaps Meta will call them the Meta Ray-Ban Display. Based on a brief clip included in UploadVR’s article, the actual display is in the right lens of the glasses, and the clip shows how the glasses will let you do things like ask Meta AI a question, look at a map on the glasses to help you navigate, translate a sign, or use your hand with the wristband to “write” a reply to a chat.

Earlier this year, CNBC reported that the wristband for Meta’s codenamed “Hypernova” glasses with a display would use surface electromyography (sEMG) technology to interpret signals from hand movements to help you control the device, so the clip is presumably showing that tech in action.

Meta CEO Mark Zuckerberg will be hosting a Connect keynote at 8PM ET on Wednesday, where it seems like these new glasses will make their official debut. The Verge will be covering the keynote live.

Correction, September 15th: An earlier version of this article speculated about translucent versions of the HSTN Oakley glasses, but those are already on sale.

Read the whole story
alvinashcraft
22 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Released: General Availability of Microsoft.Data.SqlClient 6.1

1 Share

We have released for general availability Microsoft.Data.SqlClient 6.1. This .NET Data Provider for SQL Server provides general connectivity to the database and supports all the latest SQL Server features for applications targeting .NET, .NET Framework, and .NET Standard.

To try out the new package, add a NuGet reference to Microsoft.Data.SqlClient in your application.

If you've been following our preview releases, you know we've been busy working to add features and improve stability and performance of the Microsoft.Data.SqlClient library.

Highlights

Some of the highlights of new features in 6.1 over the 6.0 release of Microsoft.Data.SqlClient include:

  • Added dedicated SQL Server vector data type support Read more
  • Revived .NET Standard 2.0 target support
  • Added packet multiplexing support to improve large data type async read performance (See Lowlight)

Lowlight

The initial release, 6.1.0, had regressions introduced by the changes to improve large data type async read performance. The 6.1.0 release was delisted and 6.1.1 was released with the performance changes reverted to maintain stability and reliability of the library. Fixing the performance of fetching large data types in async mode was the highest user-upvoted issue in our GitHub repository and had been worked on for a long time. We regret that the changes introduced regressions and are taking steps to address them as well as expand testing to cover the scenarios that were affected to ensure we don't regress those scenarios in the future. We hope that the performance changes can be brought forward in a future release, but stability of the library will always be a higher priority for us.

 

For the full list of added features, fixes, and changes in Microsoft.Data.SqlClient 6.1, please see the Release Notes.

 

Again, to try out the new package, add a NuGet reference to Microsoft.Data.SqlClient in your application. If you encounter any issues or have any feedback, head over to the SqlClient GitHub repository and submit an issue.

 

David Engel

 

Read the whole story
alvinashcraft
22 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Simplifying advanced networking with DHCPv6 Prefix Delegation

1 Share
Posted by Lorenzo Colitti - TL, Android Core Networking and Patrick Rohr - Software Engineer, Android Core Networking

IPv4 complicates app code and causes battery impact

Most of today’s Internet traffic still uses IPv4, which cannot provide transparent end-to-end connectivity to apps. IPv4 only provides 232 addresses - much less than the number of devices on today’s Internet - so it’s not possible to assign a public IPv4 address to every Android device, let alone to individual apps or functions within a device. So most Internet users have private IPv4 addresses, and share a public IPv4 address with other users of the same network using Network Address Translation (NAT). NAT makes it difficult to build advanced networking apps such as video calling apps or VPNs, because these sorts of apps need to periodically send packets to keep NAT sessions alive (which hurts battery) and implement complex protocols such as STUN to allow devices to connect to each other through NAT.

Why IPv6 hasn’t solved this problem yet

The new version of the Internet protocol, IPv6 - now used by about half of all Google users - provides virtually unlimited address space and the ability for devices to use multiple addresses. When every device can get global IPv6 addresses, there is no need to use NAT for address sharing! But although the address space itself is no longer limited, the current IPv6 address assignment methods used on Wi-Fi, such as SLAAC and DHCPv6 IA_NA, still have limitations.

For one thing, both SLAAC and DHCPv6 IA_NA require the network to maintain state for each individual address, so assigning more than a few IPv6 addresses to every Android device can cause scaling issues on the network. This means it’s often not possible to assign IPv6 addresses to VMs or containers within the device, or to wearable devices and other tethered devices connected to it. For example, if your app is running on a wearable device connected to an Android phone,  or on a tablet tethered to an Android phone that’s connected to Wi-Fi, it likely won’t have IPv6 connectivity and will need to deal with the complexities and battery impact of NAT.

Additionally, we’ve heard feedback from some users and network operators that they desire more control over the IPv6 addresses used by Android devices. Until now, Android only supported SLAAC, which does not allow networks to assign predictable IPv6 addresses, and makes it more difficult to track the mapping between IPv6 addresses and the devices using them. This has limited the availability of IPv6 on Android devices on some networks.

The solution: dedicated IPv6 address blocks with DHCPv6 PD

To overcome these drawbacks, we have added support for DHCPv6 Prefix Delegation (PD) as defined in RFC 8415 and RFC 9762. The Android network stack can now request a dedicated prefix from the network, and if it obtains a prefix, it will use it to obtain IPv6 connectivity. In future releases, the device will be able to share the prefix with wearable devices, tethered devices, virtual machines, and stub networks such as Thread, providing all these devices with global IPv6 connectivity. This truly realizes the potential of IPv6 to allow end-to-end, scalable connectivity to an unlimited number of devices and functions, without requiring NAT. And because the prefix is assigned by the network, network operators can use existing DHCPv6 logging infrastructure to track which device is using which prefix (see RFC 9663 for guidance to network operators on deploying DHCPv6 PD).

This allows networks to fully realize the potential of IPv6: devices maintain the flexibility of SLAAC, such as the ability to use a nearly unlimited number of addresses, and the network maintains the manageability and accountability of a traditional DHCPv6 setup. We hope that this will allow more networks to transition to IPv6, providing apps with end-to-end IPv6 connectivity and reducing the need for NAT traversal and keepalives.

What this means for app developers

DHCPv6 PD support is expected to roll out to most devices running Android and above before the end of the year via a Google Play System Update. No action is needed to take advantage of it - it will just transparently provide IPv6 connectivity on networks that support it. We hope this change encourages more networks to adopt IPv6, leading to improved battery life, reliability, and code simplicity in these complex networking scenarios. And if you have a complex networking app, and your app or server doesn’t support IPv6, now might be a good time to leverage it to improve reliability and battery life.

Read the whole story
alvinashcraft
22 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Swift 6.2 Released

1 Share

We’re excited to announce Swift 6.2, a release aimed at making every Swift developer more productive, regardless of where or how you write code. From improved tooling and libraries to enhancements in concurrency and performance, Swift 6.2 delivers a broad set of features designed for real-world development at every layer of the software stack.

Read on for a deep dive into changes to the language, libraries, workflows, platform support, and next steps for getting started with Swift 6.2.

Approachable Concurrency

Swift 6.2 lowers the barrier to concurrent programming with a set of changes designed to reduce boilerplate and let you write safe concurrent code more naturally:

  • Single-threaded by default: Run your code on the main thread without explicit @MainActor annotations using the new option to isolate code to the main actor by default. This option is ideal for scripts, UI code, and other executable targets.
  • Intuitive async functions: Write async code without concurrent access to mutable state. Previously, nonisolated async methods always switched to the global executor that manages the concurrent thread pool, which made it difficult to write async methods for class types without data-race safety errors. In Swift 6.2, you can migrate to an upcoming feature where async functions run in the caller’s execution context, even when called on the main actor.
  • Opting into concurrency with @concurrent: Introduce code that runs concurrently using the new @concurrent attribute. This makes it clear when you want code to remain serialized on actor, and when code may run in parallel.
// In '-default-isolation MainActor' mode

struct Image {
  // The image cache is safe because it's protected
  // by the main actor.
  static var cachedImage: [URL: Image] = [:]

  static func create(from url: URL) async throws -> Image {
    if let image = cachedImage[url] {
      return image
    }

    let image = try await fetchImage(at: url)

    cachedImage[url] = image
    return image
  }

  // Fetch the data from the given URL and decode it.
  // This is performed on the concurrent thread pool to
  // keep the main actor free while decoding large images.
  @concurrent
  static func fetchImage(at url: URL) async throws -> Image {
    let (data, _) = try await URLSession.shared.data(from: url)
    return await decode(data: data)
  }
}

Together, these improvements let you write data-race free code with less annotation overhead, provide more predictable behavior for async code, while still allowing you to introduce concurrency when you need it.

Safe Systems Programming

Swift 6.2 includes features designed to maximize performance without compromising safety. These features help you write safe, low-level code with predictable performance and minimal overhead.

InlineArray is a new fixed-size array with inline storage for elements, which can be stored on the stack or directly within other types without additional heap allocation. You can introduce an inline array by writing the size in angle brackets before the element, or by using the of shorthand syntax:

struct Game {
  // Shorthand for InlineArray<40, Sprite>
  var bricks: [40 of Sprite]

  init(_ brickSprite: Sprite) {
    bricks = .init(repeating: brickSprite)
  }
}

The new Span type offers safe, direct access to contiguous memory. Span maintains memory safety by ensuring the memory remains valid while you’re using it. These guarantees are checked at compile time with no runtime overhead, and define away the memory safety problems inherent to pointers, such as use-after-free bugs.

Swift 6.2 enhances its capabilities for low-level and security-critical projects beyond new APIs:

  • Embedded Swift: Embedded Swift now includes Swift’s full String APIs, any types for class-constrained protocols, and the new InlineArray and Span types.
  • Safe C++ interoperability: Projects that mix Swift and C++ can take advantage of Swift’s safe abstractions like Span for C++ APIs through header annotations.
  • Opt-in strict memory safety: Swift has provided memory safety since its inception, while allowing use of unsafe constructs like unsafe pointers when needed, such as using a C API that accepts pointers. Swift 6.2 introduces opt-in strict memory safety, which flags uses of unsafe constructs, so you can replace them with safe alternatives or explicitly acknowledge them in source code. It’s opt-in because the majority of projects don’t need this level of enforcement — strict memory safety is best left for projects with the strongest security requirements.

Streamlined Workflows

Beyond language improvements, Swift 6.2 smooths the day-to-day iteration cycle of editing, building, and debugging code.

VS Code Swift extension

The Swift extension for VS Code is now officially verified and distributed by Swift.org. The latest version of the extension includes:

  • Background indexing by default: Write code with fast, always-up-to-date editor features like jump-to-definition and code completion.
  • Built-in LLDB debugging: Step through Swift code, set breakpoints, and inspect state using LLDB right inside VS Code.
  • Swift project panel: Navigate your Swift project’s targets, dependencies, and tasks in the Explorer view.
  • Live DocC preview: Preview your rendered documentation side-by-side with your code, updated live as you type.

These workflow improvements make it easier to work on Swift projects in your environment of choice with first-class tooling.

Precise warning control

Swift 6.2 introduces enhances how you manage compiler warnings by allowing control at the diagnostic group level. A diagnostic group is a category of warnings identified by a name. You can specify the desired behavior of warnings in a diagnostic group in a Swift package manifest using the treatWarning method on SwiftSetting, or promote all warnings to errors using the treatAllWarnings method. For example, you can promote all warnings to errors except for warnings about uses of deprecated APIs:

.target(
  name: "MyLibrary",
  swiftSettings: [
    .treatAllWarnings(as: .error),
    .treatWarning("DeprecatedDeclaration", as: .warning),
  ]
)

Macro build performance

Swift 6.2 significantly improves clean build times for projects that use macro-based APIs. Previously, the build system had to first fetch and build the swift-syntax package from source before building the macro project, which noticeably lengthened compile times, especially in CI environments. SwiftPM now supports pre-built swift-syntax dependencies, completely eliminating an expensive build step.

Enhanced async debugging

Swift 6.2 makes it much easier to follow what’s happening in concurrent code when debugging with LLDB:

  • Robust async stepping: Reliably step into asynchronous functions in LLDB, even when the async call requires switching threads.
  • Surfacing task context: See which task a piece of code is running on when stopped at a breakpoint and when viewing the backtrace for the current thread.
  • Named tasks: Assign human-readable names when creating tasks, which are surfaced in the task context in debugging and profiling tools.

Migration to upcoming features

Swift 6.2 includes migration tooling to help you adopt upcoming language features:

  • Identify source incompatibility: Identify code patterns that will no longer compile or change behavior when the upcoming feature is enabled through warnings from migration tooling.
  • Automate code changes: Apply fix-its to update your code to preserve its existing behavior.

This streamlines the process of enabling upcoming features by eliminating the tedious task of manual code changes. You can learn more about migration tooling in the Swift migration guide.

Core Library Updates

Whether you’re managing external processes, reacting to state changes, or writing test suites, the Swift 6.2 libraries are evolving to help you write cleaner and safer code.

Subprocess

Swift 6.2 introduces a new Subprocess package that offers a streamlined, concurrency‑friendly API for launching and managing external processes. This includes APIs built with async/await, fine-grained control over process execution, platform-specific configuration, and more—ideal for scripting, automation, and server‑side tasks:

import Subprocess

let swiftPath = FilePath("/usr/bin/swift")
let result = try await run(
  .path(swiftPath),
  arguments: ["--version"]
)

let swiftVersion = result.standardOutput

Explore the full API surface for version 0.1 in the swift-subprocess repository, and feedback from your adoption will inform the API that is released in version 1.0.

Foundation

In Swift 6.2, the Foundation library includes a modern NotificationCenter API that uses concrete notification types instead of relying on strings and untyped dictionaries for notification names and payloads. This means you can define a notification struct with stored properties, and observers can use the type without error-prone indexing and dynamic casting. Notification types also specify whether they’re posted synchronously on the main actor or asynchronously through a conformance to MainActorMessage or AsyncMessage, which eliminates concurrency errors when working with main actor notifications.

Observation

Swift 6.2 enables streaming transactional state changes of observable types using the new Observations async sequence type. Updates include all synchronous changes to the observable properties, and the transaction ends at the next await that suspends. This avoids redundant UI updates, improves performance, and ensures that your code reacts to a consistent snapshot of the value.

Swift Testing

Swift Testing in Swift 6.2 adds new APIs for enhanced expressivity in your tests and test results:

  • Exit testing lets you verify that code terminates under specific conditions, such as a failed precondition. Your exit tests run in a new process and validate that the exit behavior is what you expect, making it possible to exercise critical failure paths like you would in any other test.
  • Attachments let you include additional context in test results, including strings, images, logs, and other artifacts, surfaced in test reports or written to disk. This makes it easier to diagnose failures with concrete evidence—whether that’s a screenshot of a UI state, a JSON payload, or a trace of steps leading up to the issue.
  • Raw identifier display names let you customize the names of test functions and suite types with less code:

      -@Test("square() returns x * x")
      -func squareIsXTimesX() {
      +@Test func `square() returns x * x`() {
         #expect(square(4) == 4 * 4)
       }
    

WebAssembly Support

Swift 6.2 gains support for WebAssembly, also known as Wasm. WebAssembly is a virtual machine platform focused on portability, security, and high performance. You can build both client and server applications for Wasm and deploy to the browser or other runtimes. Learn more about Wasm in the vision for WebAssembly support in Swift.

Thank you

Thank you to everyone who shared their experiences, frustrations, and insights that guided the design of Swift 6.2, especially the approachable concurrency model. Your feedback made it clear where the language could be friendlier, where safety needed to feel more natural, and where the tools could make you more productive. The improvements in Swift 6.2 are only possible because of your voices.

If you’re excited about where Swift is headed, there’s no better time to get involved in the Swift community. From participating in Swift Evolution, to contributing code on GitHub, or sharing feedback on how the language feels in real-world projects, every voice helps shape Swift’s future. Whether you’re a seasoned programmer or just starting out, our community thrives on collaboration and welcomes new perspectives. Join in, learn from others, and help make Swift a better language.

Next Steps

You can find a complete list of language proposals that were accepted through the Swift Evolution process and implemented in Swift 6.2 on the Swift Evolution dashboard.

Ready to upgrade? Install the latest toolchain using Swiftly swiftly install 6.2 or Swift.org/install and start exploring Swift 6.2 today.

Read the whole story
alvinashcraft
23 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Just enough automation (News)

1 Share

Zach Gates quantifies the value of automating things, Albania’s new prime minister names an AI “minister” to his Cabinet, Eckart Walther launches Really Simple Licensing (RSL) along with some big names on the web, Vishnu Haridas praises UTF-8’s design, and Justin Searls disagrees with last week’s headline story about AI coding tools and shovelware.

View the newsletter

Join the discussion

Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!

Sponsors:

  • Depot10x faster builds? Yes please. Build faster. Waste less time. Accelerate Docker image builds, and GitHub Actions workflows. Easily integrate with your existing CI provider and dev workflows to save hours of build time.

Featuring:





Download audio: https://op3.dev/e/https://cdn.changelog.com/uploads/news/161/changelog-news-161.mp3
Read the whole story
alvinashcraft
23 minutes ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories