Tokeep things moving swiftly, riders pay at the station before boarding at any door. Fares can be paid with an ORCA card or at a ticket kiosk with cash or credit card. Swift buses only stop for about 10 seconds at each station. Signal priority technology and bus lanes keep Swift running quickly through traffic.
All Swift stations are accessible and Swift buses can accommodate wheelchairs, walkers, strollers, and bikes. All buses have low floors, with only one step from the ground to the main floor. Announcements are made for every Swift stop.
Swift fare is the same as other local bus fare and riders never pay more than $2.50 per ride. Reduced fares are available for riders 65 and older, riders with disabilities, Medicare cardholders, and people from low-income households. Youth 18 and younger ride free. When you pay using an ORCA card, your fare payment can be transferred between rides on buses and light rail for two hours after you first use your card.
Orange Line runs between Edmonds College in Lynnwood and McCollum Park Park & Ride in Mill Creek. It connects with Swift Blue Line at Highway 99 & 196th Street in Lynnwood and shares stations with Swift Green Line on Bothell-Everett Highway in Mill Creek.
The Swift Gold Line will bring fast, frequent, and reliable bus service to north Snohomish County by connecting downtown Everett to downtown Marysville and Arlington. Learn more about the Swift Gold Line project and opportunities for engagement.
Tap with ORCA. Your ORCA card is the best and fastest way to pay because it automatically gives you a two-hour transfer to buses or other transit, such as light rail. Just tap your card and hop on!
Buy a ticket. Pay with cash or credit card at a ticket kiosk on the station platform. Tickets are valid only on Swift and until the expiration time shown (1 hour and 30 minutes). Always keep your ticket as proof of payment (and a souvenir).
I managed to create a very small Embedded Swift "toolchain" for building pure Swift executables for the Raspberry Pi Pico (it might also work with other RP2040 boards, but I'm only testing on the Pico). The "toolchain" is just a Makefile, so no SwiftPM integration yet, but I feel we're not too far off. The repository is here if you want to try it out:
Much less build system complexity. This makes it much more feasible IMO to get it working with SwiftPM eventually. I found the complexity of the Pico SDK's CMake config very overwhelming. The Makefile we have here isn't pretty, but it's soooo much smaller.
The main application code is all Swift. There's very little C and Assembly involved for the bootstrapping. I copied the necessary files (linker script etc.) from the Pico SDK and patched them slightly. The bootstrapping code still does a few things we don't really need. I hope to make whittle it down to the bare minimum we need eventually, if only to understand it better.
I'm using the C compiler and linker from the ARM Embedded LLVM toolchain. If I'm reading @kubamracek current work in the Swift repo correctly (e.g. [embedded] Start building and including lld even in Darwin toolchains by kubamracek Pull Request #70715 apple/swift GitHub), we may soon be able to use the Swift linker for this?
The next step I'd love to take is SwiftPM integration as this would make it so much easier to integrate other packages. I started experimenting with building an SE-0387-style SDK for the RP-2040, but I haven't succeeded yet. I'll probably post questions in a separate thread.
I didn't play with the new 387 stuff yet (FP coprocessor support?), which is probably much better, but maybe my cross compiler sample might be helpful too: Swift Package Manager Cross Compilation Destinations GitHub
The next step I'd love to take is SwiftPM integration as this would make it so much easier to integrate other packages. I started experimenting with building an SE-0387 -style SDK for the RP-2040, but I haven't succeeded yet. I'll probably post questions in a separate thread.
I'm not entirely convinced Swift SDKs are the right answer for embedded platforms. The primary reason to have a Swift SDK is a need for a special libc and dependencies like swift-corelibs-dispatch and swift-corelibs-xctest that are hard to build as a package. Another potential use case is the ability to define test runners and debuggers, but this latter possibility hasn't been explored yet.
Since you don't immediately need either of those in this case, if you can fit all the required platform things into a separate package it should be much easier for users to depend on it. That also makes it highly customizable and easy to update in one go, as opposed to adding an out-of-package Swift SDK dependency.
Thank you, Helge. I think I'd rather go with the new SDK approach (if it's necessary at all, see @Max_Desiatov's reply above) because why not use the new stuff? I never used cross-compilation with destination.json so I think my time is better spent focusing on the new stuff. Both approaches seem very similar to me.
Oh yes, absolutely use the new stuff!! As mentioned I haven't looked at it yet, I thought my stuff might be potentially helpful to build upon the new things.
My things essentially streamline the work by @johannesweiss into distinct steps (getting a target toolchain and things like that).
Interesting. I think a special libc might be interesting/necessary for some embedded environments. For example, the Pico C SDK does depend on an embedded libc AFAIK, but that's a topic for the other thread Embedded Swift running on the Raspberry Pi Pico. You're right that the from-scratch approach we're discussing in this thread doesn't need it.
We can prebuild boot2 and crt0, but then we're also no longer talking about a simple package that you can include as a dependency, right (because of the binary files involved)? And it doesn't solve how to pass the linker script to the final link step.
Here are the errors I get when I try to link with Swift (on Linux; I understand linking ELF files on macOS is work in progress: [embedded] Start building and including lld even in Darwin toolchains by kubamracek Pull Request #70715 apple/swift GitHub):
I ran GitHub - apple/swift-sdk-generator: Generate Swift SDKs for cross-compilation with the default settings. It produced a working Mac-to-Linux cross-compilation SDK, i.e. I successfully used it to build a Linux binary on the Mac.
This should be doable with a plugin. Maybe even the Python script can be packaged in an .artifactbundle and then called from the plugin? You can just pretend it's a "binary", by sticking an executable flag on it and adding an appropriate Python shebang header. IMO in SwiftPM we're too prescriptive in saying that package plugins must delegate to binary executables, any executable script should do, assuming an interpreter for it is available.
OK, I created a repo with a minimal SwiftPM package: just an executable product with an empty main method, not including any of the RP2040-specific stuff. Here's the repo: GitHub - ole/SwiftPM-embedded-minimal
Now I want to build this for Embedded (armv6m-none-none-eabi in my case). Depending on the configuration (Mac vs. Linux and debug vs. release), I'm getting different build errors. I have documented these in two issues:
I don't necessarily expect these builds to succeed as they are because the linker would certainly miss some required symbols. But the errors I'm seeing seem to occur at an earlier stage, and they're the same errors I'm seeing with my more complex RP2040-specific setup (incl. linker scripts etc.), which I pushed here: [WIP] Try to build with SwiftPM by ole Pull Request #4 ole/swift-rp-pico-bare GitHub.
I have successfully used SwiftPM to build Swift sources to a static library and link it with other object files using lld. This is still a very small example, but I hope it is at least partially helpful for you.
*Edit* please do not send any negative messages to secretsjusttokeepyou the OP. She is not involved with this message and has asked that anonymous swifties kindly stop accusing her of being associated with this post.
For more information or to request non urgent assistance regarding access to services, email
swif...@ucr.edu or click here to fill out our information request form and a team member will respond within the next business day. *Please note that SWIFT services are not fully active at this time.*
Provides follow-up care, post crisis including linking students to aftercare resources, ongoing treatment, supportive services on and off campus, and even post-hospitalization planning.
The SWIFT Mobile Crisis Response Van is a transportation service brought to you by Mental Health & Equity funds to aid highlanders to access specialty and higher-level behavioral health services when needed. A critical objective is to ensure that individuals experiencing a mental health crisis while on the UCR campus are provided with the highest level of care and support possible with the least restrictive means and highest level of access.
SWIFT Clinicians will respond to calls/encounters. The co-response and initial assessments are led by the SWIFT Clinician accompanied by a Campus Safety Responder. SWIFT strives to match the right professional to the specific call and adapts as needed.
SWIFT Clinicians are confidential and are not permitted to communicate any information without explicit consent or if they fall under legal exceptions to confidentiality. Students will be given the opportunity to sign a release of information (ROI) to UCR resource offices and outside entities as needed.
3a8082e126