* tart exec: explain that Tart Guest Agent is required
Also handle decrease the connection timeout to 1 second
and provide a hint to the user.
* execute() can be made private
* Include error.localizedDescription
* Introduce "tart exec" command as an alternative to SSH
* Simplify control socket machinery by using NIO async/await primitives
* No reason to print the "vm" object directly, just refer to it as "VM"
* Log to Apple’s Unified Logging System
* Enable clipboard sharing on macOS too
And document which packages need to be installed on these operating
systems.
* We now use Tart Guest Agent
Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
---------
Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
* Iterate over Orchard Architecture description
* Document Orchard Controller customization (e.g. --listen-ssh)
* New section: "Using Orchard CLI"
* Fix Markdown unordered list indentation
* Fix "fenced code blocks should have a language specified"
* the context → a context
* Clarify different port
* Simplify labels explanation
* Studios → Studio
* Better explain resources
* crate → create
* only to place → only place
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Surround "Using resources when creating VMs" header by blank lines
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Posibility to add Labels when pushing OCI Image
Example running:
tart push $image ${registry}/org/${image}-testing --labels com.org.revision=testing --labels com.org.repo.buildid=123456
* Fix Linting
Run swift package plugin --allow-writing-to-package-directory swiftformat --cache ignore
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/OCI/Manifest.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
* Do not use a variable to store parseLabels() results
* Trim spaces before splitting labels and support empty values
---------
Co-authored-by: Victor Serbu <victors@4psa.com>
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
* docs(FAQ): document unsupported DHCP client identifiers
* New section "Resolving the VMs IP with bridged networking"
And a more clearer explanation of what "tart ip" does.
* Remove extraneous space in ` --resolver=arp`
* Better section name
* Add a note about Linux talkativeness
* Explain "talkativeness" a bit better
* Build universal binary instead of architecture dependent
* Added universal_binaries stage to goreleaser
* Fixed paths to compiled binary in .cirrus.yml
* Revert changes in .cirrus.yml, use builtin venv module instead of virtualenv only
* tart run: introduce --net-softnet-expose
* --net-softnet-expose: add discussion
* --net-softnet-expose: add a note about Softnet restrictions
...and how to disable them.
* LAN → local network
* Better clarify what --net-softnet does
And how --net-softnet-allow can change that behavior.
* Registry: limit the text output on unexpected status code
* pullBlob(): limit channel read-out on error to 4 KiB
* No need to always read channel until end
This was introduced in https://github.com/cirruslabs/tart/pull/284
because we were blocking in "urlSession(_ session: URLSession, dataTask:
URLSessionDataTask, didReceive data: Data)", which we don't do anymore.
* Fetcher.fetch(): remove "progress" argument as we don't need it anymore
Otherwise we start to periodically get RST's from GitHub, possibly
because of too many connection opens, which has an effect of cancelling
previously received bytes.
These RST's can be observed in tcpdump/Wireshark or Console, emitted
from the libusrtcp.dylib library, com.apple.network subsystem, for the
Tart process:
>tcp_input [C59.1.1.1:3] flags=[R] seq=1805021659, ack=0, win=0 state=CLOSED rcv_nxt=1805021659, snd_una=1752355607
You can also observe the "Received Bytes" in "Activity Monitor" for
the Tart process while pulling ghcr.io/cirruslabs/macos-runner:sequoia,
and this value will periodically decrease.
* DiskV2: avoid allocating zero chunk on each zeroSkippingWrite() call
* Increase hole granularity size from 64 KiB to 4 MiB
* Fetcher: never write to disk, thanks to URLSessionDataDelegate
* Get a fresh instance of executor for each benchmark invocation
And don't pre-initialize all of the executors at once, as this
might reach the maximum number of VMs limit in case we want to
test multiple Tart executors.
* Run benchmarks on Tart with different --root-disk-opts options
* Fix TestTart
* benchmark fio: introduce --prepare command-line argument
To be able to specify --prepare='sudo purge && sync', similarly to
Hyperfine[1].
[1]: https://github.com/sharkdp/hyperfine
* Benchmark Tart with --root-disk-opts=caching=cached separately too
* Add Ars Technica recommended benchmarks
* Tart executor: log SSH session standard output and standard error
* Reduce file I/O size from 16 to 10 GB to avoid "No space left on device"
* Remove random writing tests to make space for more read/read-write tests
* Add some "randrw"-style fio benchmarks
* Show latency in benchmark results
* Add sync benchmark and show read/write/sync latency
* README.md: add new benchmark results