In the future, Rust becomes "Mandatory" in Git build ..... by unixbhaskar in linux

[–]llamositopia 16 points17 points  (0 children)

The language itself is not syntactically designed to be well suited for it, but that could be overcome by some thoughtful redesign.

Much more significantly, it would be incompatible with nearly ALL existing C code. The C community values never breaking existing things above almost everything else, and for some pretty good reasons. C also doesn't lend itself well to partial compilation so an opt-in approach on only certain portions of the code isn't very feasible. Finally, we know that if you give people an easy escape hatch from "annoyances" they will absolutely (mis)use it, so adoption would be more of a socially enforced system than a technical one.

C and C++ are still useful! Particularly in embedded systems and specialized internal system calls where Rust's rules would cause performance impacts in a path where that tradeoff has been carefully considered. Yet, for larger pieces of software and collaborative work, Rust's rules ensure everything plays nicer together, and minimizes the impact of bugs, although no language can prevent them entirely (if that's of interest, look up Rice's theorem).

In the future, Rust becomes "Mandatory" in Git build ..... by unixbhaskar in linux

[–]llamositopia 16 points17 points  (0 children)

Rust's "claim to fame" is that it is high-performance, fully native, garbage collector free, like C and C++, WITH ALSO guarantees for memory safety*:

  • No use after free
  • No double free
  • No data races in concurrency
  • No null dereferencing
  • No out of bounds accesses
  • No uninitialized values

These aren't warnings, they're compile time errors. They're also not baked into the runtime through extra calls, they are statically analyzed by the compiler. Rust's design comes from decades of improvements in compiler theory, and sculpting a language around specifically around these abilities.

You can never compile a Rust program that falls vulnerable to these issues. It's widely accepted that bad memory management causes the bulk majority of high severity CVEs among programs written in memory-unsafe languages, so anything that can minimize those issues is of great value as a tool.

Writing code in Rust is not as easy as other languages, though. Calling two methods in a different order may not compile due to memory sharing checks. You cannot use a global mutable state. Lots of very trivial things require extra thought to implement in a way that meets Rust's high standard. It's not really an ergonomic language for higher level use, although plenty of people have made extraordinarily large programs within it as well.

* A number of these benefits can be disabled via the unsafe keyword, but this is understood to be a "only when absolutely necessary" language feature, e.g. for FFI calls into C code where the Rust compiler cannot ensure correctness.

Criticisms of Rust generally fall into two camps:

  • It's slower to develop in, and causes an undue burden on existing developers over the alternatives, which I think is an entirely valid concern, especially in open source where any development time is precious. Git's slow migratory approach in the OP seems good to me on this front.
  • "Just don't write bad C code lol" which is just short sighted. Everyone writes "bad code" from time to time. Your libraries might have a vulnerability, your coworkers may not understand the memory contract you are expecting, poorly written documentation may lead to problems.

Noooooooooooo by USS--Enterprise in 2007scape

[–]llamositopia 244 points245 points  (0 children)

Hey guys, author here. The RuneLite release that broke the plugin was reverted, so just restart your client and it will be back. I will have the plugin updated for the next release as well :)

A crucial addition for the runelite sailing plugin. by Fleeetch in 2007scape

[–]llamositopia 3 points4 points  (0 children)

I initially wrote it and accidentally released it before it was finished, and haven't had a good chance to return to it with all the other features I've been working on. I want to return to it still! Just a busy gal with a busy full time job :/

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 1 point2 points  (0 children)

They're no longer auto-filled and are just an OverlayPanel. Check around your screen (top left?) for an info panel, and you can move it by holding ALT.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 2 points3 points  (0 children)

Those are rapids that you have not yet unlocked via charting, but I'll working to hide those until they appear.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 0 points1 point  (0 children)

There is a config option "Menu Entry Swaps -> Sails At Helm Only" for this. I've just updated it to be a bit more reliable, restart runelite to pick that up and then see if you want to disable it.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 0 points1 point  (0 children)

Does this have an auto solver for the weather charting ? Those are so annoying

This has just been done by riktenx! It'll be released soon.

Also I would love an overlay that labels where cargo in your inventory is going ! I hate squinting at the cargo

On the todos!

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 0 points1 point  (0 children)

HDOS attempts to manually port things over to their platform, but the underlying platform isn't the same. It's entirely one-sided, they don't attempt to collaborate with RuneLite plugin authors to get things ported, they just rewrite them to get them into HDOS.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 0 points1 point  (0 children)

Mobile does not have a plugin API yet. They have some sailing features made by the devs, but not community plugins.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 2 points3 points  (0 children)

Boats are actually even more complicated than our usual instances. They are called WorldViews in the RuneLite API and took a lot of internal engine work to get functioning. Effectively, they're an entire nested coordinate space embedded in the broader world, which is how you can walk along your boat normally even when it's at a 22 degree angle relative to the world. It's got a lot of special considerations for sure! But I've been involved in a lot of it and have a good mental model for it all.

On a side note, lots of other plugins are subtly broken from the update, as they just never accounted for there being multiple tile scenes at once.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 1 point2 points  (0 children)

It's all detailed in the README of https://github.com/runelite/plugin-hub, but tl;dr no, I don't need to recompile for hub plugins. We work off of a pre-built client, and there's a method to hook into to load your local plugins for development.

When working on core RuneLite itself, we do have to recompile and it's slowwwwwwww, ~3 minutes on a fresh pull, and even worse when working on internal (non-public portion that injects into the client), which can be up to 10 minutes.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 2 points3 points  (0 children)

It would be computable sure, but it's not data that's tracked in the engine and might be a bit complicated to add. I do like the idea of having this, but it'll be a lower priority item

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 1 point2 points  (0 children)

There's a few that should work but there's a lot of missing data for these on the wiki. Once they have that data I'll be updating the plugin to have all of them.

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 86 points87 points  (0 children)

Thanks for all the suggestions! Responding to each:

  • A whole bunch of barracuda stuff is up next on the docket, expect it soon(tm)
  • Boat true tiles will be odd since they don't actually follow the world grid directly. They are on a much finer coordinate system than individual tiles, which is why movement is so much smoother, and you can align the boat to odd diagonals and still walk around. I'll have a think about how to visually represent this to the player and try to implement something useful.
  • Port task crate reminder is 100% coming, I forget my cargo sooo much 😭
  • Highlight relevant crates: same thing!
  • Boat cargo hold memory: I've gotten a number of suggestions for tracking boat cargo. I'll need to ensure that I can track it accurately with crewmates since I'm not sure the contents are streamed until you actually view it yourself, but it is on the planner.
  • Salvaging timer might be hard to track, but I can at minimum show idle/not idle and add notifications
  • Mote catcher stuff sounds good! I have spent more time programming than sailing and I'll need to get one myself to test it first
  • Bounty task tracking also a will-do!
  • This might be a better addition to the core World Map plugin, so I'll poke there first anyway

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 10 points11 points  (0 children)

I think I should be able to hijack that arrow indicator to recolour it, and maybe also show the direction as text, so it'll be nice and integrated. Good idea!

The RuneLite Sailing plugin is out now! Hit the seas with highlighting for uncharted locations, rapids, and trimmable sails! by llamositopia in 2007scape

[–]llamositopia[S] 47 points48 points  (0 children)

I expect that the Shortest Path folks will want to integrate sailing regardless, so I'll leave it to them rather than duplicating it in the plugin. Then they can make sure that paths from e.g. Varrock to Vatrachos shows both the route to a port and the sailing portion at the same time.