New Buoy releases

Classic “well it works on my machine” syndrome. Sorry about that.

Testing fixes for both of these issues now.

Classic “well it works on my machine” syndrome. Sorry about that.

Testing fixes for both of these issues now.

FWIW, this is what it looks like when it’s working :stuck_out_tongue:

No need to be sorry ! :slight_smile:

I am having a blast. And am just reporting what I poke at and I don’t think anyone is expecting everything to work at this point in time.

I understand. I just don’t want to leave people hanging if they’re trying to help me make a better product!

That said, I’m going to move to a PKG installer rather than relying on the user to copy to the right location, or remember to run the vscode update script or install the new BBEdit plist file or configure vscode correctly. I can do all of that for you in an installer and just have it behave correctly out of the box.

Buoy 0.19.2

Fixes for the debugger stuff released in 0.19.0.

NOTE: we’re now using an installer on macOS. We’re doing this to help users get everything installed correctly the first time:

  1. Installs buoy where you want
  2. Installs VSCode plugin if VSCode is installed
  3. Installs BBEdit plist if BBEdit is installed
  4. Makes a symlink between new buoy binary and /usr/local/bin/buoy so it’ll always be available on the command line

If you’ve modified your Buoy configuration in VSCode, I suggest that you clear the path to the buoy binary so it just uses the one on the PATH.

I keep spamming you :frowning:

So this is on 0.19.2

Having reset the settings in VS code to noting.

It does seem to have installed though:

image

It’s fine. we’ve interacted this week probably more than in the entire time I used & worked for Xojo. :slight_smile:

I set up a brand new macOS VM just for checking this. I’m going to look at the settings I have there now.

Grrrr… I lost the Buoy folder icon somehow.

Seems I also broke running from the samples directory because it tries to put the build next to the app.

It’s nice to have someone as enthusiastic about buoy as I am anyway.

I think the issue there is that the install has your user name hard coded for it. (as the picture above shows)

So careful that new machine with same user name might not catch it.

yeah, I’m going to add a scrub mechanism so it’ll show some other username like Corbin_Dallas or something.

Buoy 0.20.0 is now available

Tonight’s build has lots of new and fixed stuff!

Highlights

  • Start of Toolbar class. MacOS implemented
  • Service Applications
  • Return codes for console apps
  • Treat class as otherClass blocks
  • Xojo-style casting class1(otherClass)

Buoy 0.21.0 is available

  • CFStringRef FFI type— toll-free bridging for NSString through Declare-based macOS FFI

  • String API completion.

  • Crypto Package for Mac, Windows and Linux

  • Zip, SQLite, Crypto and a test package are now included with the installer. APIs are still subject to change. To use them you’ll need to add an import statement with the package name and the module. To get the module name, you’ll need to open the zip file and look at the manifest. The crypto import is Import cryptoprims.Crypto

  • Added an AI folder to the installer containing a starter skill for use with your favorite AI client to help it know how to write Buoy code. Work in progress.

Buoy 0.22.0 now available

New Features

  • Networking sockets — TCPSocket, UDPSocket, IPCSocket, ServerSocket (#23)

  • Support Boolean ↔ Numeric conversion via CType (#22)

  • Add Closure type and Lambda expressions for value-capturing closures

Bug Fixes

  • Putting multiple statements on the same line is now a compile error

  • Add a method to the compiler for extracting the internal class name(s)

Buoy 0.23.0 is now available

New Features

  • Add default parameter values and named arguments

  • Add Shell class - persistent shell subprocess with sync Execute() and async DataAvailable

  • Add a Currency type

Bug Fixes

  • Calling a method on a Nil property no longer SegFaults. A NilObjectException is raised instead.

  • Bytes.ToString() no longer just returns “(NULL)”

Docs

  • Added a tutorial on how to stay safe when using Threads

Compiler Known Issue

Hey everyone, last night’s work surfaced an interesting issue. I turned on unit testing across the compiler optimization levels using -O0 as the baseline since that’s what I’ve been running and fixing against since day 1.

Severity: High (build break, not a subtle miscompile — any -O1/-O2/-O3/-Os build of a program using Map/Set/collections, or even plain user code containing an ordinary zero-fill loop, fails to link entirely on Darwin targets)

We’ll get that looked at soon. Sorry about the fail.

Seems I forgot to post…

Buoy release 0.24.0

New Features

  • Merge a user-supplied Info.plist into .app bundle output (#34)

  • Add Targeted Constants and Localizations

  • Add SerialPort/SerialConnection serial-port I/O (serialio package) (#33)

  • Add System.Locale — OS-native number/date/currency formatting (#32)

  • Add System.GetNetworkInterfaces() and NetworkInterface

Buoy release v0.25.0

New Features

  • Add TLS 1.2/1.3 support to TCPSocket and ServerSocket (#38)

  • Source Fluent UI System Icons as a cross-platform icon library (#36)

  • Add SVG file rasterization to Picture

  • Add TextEncoding support

  • Add regex package (typed Regex/Match/RegexError), fix core regex cross-linking

  • Add per-user global package directory (#35)

Bug Fixes

  • TCPSocket compiles again for Windows targets

  • Linux ARM64 now has text-encoding symbols

Changes

  • Cryptoprims package has been renamed crypto

Known Issues

  • FluentIcons are being included in all builds whether you use them or not.

Sorry everyone. Seems I missed posting about 0.26.0. Here’s everything that’s changed.

NOTE: We have a new agent helping us with bug report triage! It periodically looks at the GitHub issues on the Buoy releases site and does the following:

  1. Pulls the entire content and looks at the Buoy repo to figure out if it’s a feature request (not in our plan docs), a bug report (already implemented) or a regression (implemented and fixed at least once). Label is added to the issue.
  2. If it’s a bug or regression, it uses your sample code to reproduce the bug.
  3. If it can be reproduced, “reproducible” is added to the issue.
  4. If it can’t be reproduced, more info is requested.
  5. All information gleaned during the reproduction phase is turned into a comprehensive plan to fix the bug, which is stored in our internal bug system. Depending on the severity of the bug, it is categorized as Urgent (crashes), High (behavioral), Medium or Low (cosmetic).
  6. It then looks for a workaround. If one is found, it posts that to the report.

Right now, triggering this process is manual as we try to save money but ultimately it will be completely automatic including handing it off to another agent to take a first stab at fixing the bug and yet another to do a review, so we can get fixes back in your hands as quickly as possible.

Buoy v0.27.1

New Features

  • Add TimeZone.New(offsetSeconds) fixed UTC-offset constructor

Bug Fixes

  • Intel macOS llvm vendoring fixed so debugger should work again

  • Add missing vscode plugin items

  • Support ByRef parameters on non-Declare functions, methods, and generics

  • A Structure with a reference-type field no longer crashes at runtime when returned from a function

  • Windows are now retained until they close so they don’t get destroyed when the initialization variable goes out of scope

  • Only search for a static libzstd when LLVM actually links zstd

  • Class property defaults show correctly in the debugger

v0.26.0

New Features

  • Add Break debugger-trap statement

  • Project-level app resource manifest (app_resources.json) (#42)

  • Method local declares

  • Add HTTPServer package

Bug Fixes

  • Debugger now shows values at the top level instead of the internal LLVM id

  • Add TimeZone.OffsetSeconds, make UTC offset computation real (#44)

  • Allow paren-less calls for zero-argument methods (#43)

  • Plist override fixes

  • Fold package declares/ into modules/ for real Private scoping (#41)

  • Grammar fix on Xojo plugin packaging demo

  • Package extraction bookkeeping was per-entry-file instead of shared (#39)

v0.28.0

New Features

  • Add Variant tagged-union value box package (Xojo-conversion shim)*

  • Convert DateTime, TimeZone, and TimeInterval to real classes**

  • Add buoy --list-deprecations to catalog @deprecated declarations***

Bug Fixes

  • Close crypto package native/-source bug report, add regression guard

  • Reject Array.RemoveValue/IndexOf/LastIndexOf/Contains value-type mismatches

  • Statically link libucrt.a for Windows runtime DLL C99 stdio calls

  • Resolve receiver.PropertyName(index) as array-property indexing, not a method call

  • Reject out-of-range float literals instead of crashing the lexer

  • Reject out-of-range integer literals instead of crashing the lexer

  • Reject Weak on Shared Property/field instead of segfaulting at runtime

  • Guard GTK4 popups/dialogs against unrealized/uninitialized toplevel

  • Windows CRT fd-table functions work without special init; add missing stub exports

  • Add missing loop-idiom-recognize libc symbols to Darwin libSystem.tbd stubs

  • Load full certificate chain in server-side TLS

  • Xor on Integer operands emitted invalid LLVM IR

* It is not our intention to include a Variant type in Buoy for general use. 
That said, we need to include something to help with Xojo project conversion. 
Our plan is to include a Buoy Package that Xojo users will add to their 
project which replicates the Xojo API where there are gaps. This Variant 
is a class that enforces strict type usage. That is, if you put in an integer,
you can only get an integer back. There is no implicit type conversion. If you
need that, use CType. NOTE: Variant will be marked as Deprecated from day one.

** Until today, DateTime, TimeZone, and TimeInterval were a special entity that 
acted like a value type, generated entirely within the codegen portion of the 
compiler. To get the features we want for the future, these three types had to be 
converted to classes.

*** The Buoy command now has a --list-deprecations option that will show a list of 
deprecated items.

v0.29.0

New Features

  • add @ControlSize and @ControlIcon class attributes for the layout editor palette
  • add @Serializable attribute for compile-time JSON ToJson/FromJson synthesis
  • add Clipboard class for system clipboard access
  • Add declarative layout editor in VSCode. Locks only for now.
  • add Internal access modifier
  • add StatusItem control (macOS/Windows/Linux system tray)
  • implement declarative Constraints block
  • redesign JSON API, add dotted-receiver Assigns setters

Bug Fixes

  • implement Object.TypeName() and Object.Hash() codegen
  • reject bare Shared property reference from instance method
  • reject Shared method calls through an instance receiver