Skip to content

Releases: adletec/sonic

1.5.0

09 Feb 14:43
Compare
Choose a tag to compare

GitHub Release Notes for Version 1.5.0 (2024-02-09)

🎉 Release Theme: "Quoting Freedom & Precedence Harmony!"

Greetings, code adventurers and syntax sorcerers! As we step into the fresh vibes of 2024, we're thrilled to present version 1.5.0, a release that celebrates the art of expression (literally) and brings balance to the force... of operator precedence.

New Features: Express Yourself with Quoted Strings

  • Quoted Strings Are Here: Ever felt constrained by the tyranny of naming conventions? Yearned to name your functions and symbols with the wild abandon of an artist? Wait no more! Introducing quoted strings in expressions. Now, you can encapsulate any name in single quotes, liberating you to include spaces, special characters, and the essence of your creativity. Picture this: var expression = "a + 'b c'" – where 'b c' is not just a name, but a statement.

🐛 Bugfix: Making - and ^ Play Nice

  • Issue #49 Fixed: Ah, the tale of the negative exponent not knowing its place. Thanks to the sharp eyes and swift coding of @FabianNitsche, we've corrected a cheeky bug where the exponentiation operator (^) was getting a little too ahead of itself, overshadowing the unary minus (-). Now, both operators share the spotlight, ensuring that expressions like 2^-2 are evaluated with the grace and accuracy they deserve.

📚 Why This Upgrade Rocks?

This update isn't just about new features and fixes; it's a homage to the freedom of expression and the meticulous dance of mathematics. By introducing quoted strings, we're breaking down the walls of conventional syntax, allowing your code to truly reflect your unique style. And with the operator precedence bug squashed, your calculations will be as precise as a Swiss watch.

🙌 Shout-Out to the Community

A massive thank you to @FabianNitsche and all our eagle-eyed contributors who help us chase down bugs like they're going out of style. Your dedication helps keep our software not just functional, but exceptional.

So, embrace the freedom, celebrate the precision, and let your code sing with version 1.5.0. Happy coding, and remember: in our world, even the smallest character or operator can make the biggest difference!


P.S.: Keep those suggestions, bug finds, and creative uses coming. Our journey together is what makes this adventure so exciting! 🚀🔧

1.4.1

26 Dec 12:20
Compare
Choose a tag to compare

GitHub Release Notes for Version 1.4.1 (2023-12-26)

🔧 Release Theme: "Nesting Peacefully!"

Ho-ho-ho! Just when you thought the holiday surprises were over, here comes version 1.4.1, sliding down the digital chimney! This release is all about taming those nested functions that decided to be a bit too rebellious. Plus, we've done some tidying up in our documentation. Let's unwrap this update!

🐛 Bugfix: Taming the Nesting Dragons

  • Issue #42 Resolved: Remember that pesky InvalidOperationException when you tried to nest a dynamic function inside a static one? It was like trying to fit a square peg in a round hole, but no more! We've played matchmaker and now these functions can nestle together as snugly as bugs in a rug.

    • Before: Dynamic function meets static function, chaos ensues.
    • After: Dynamic function meets static function, they shake hands and work like a charm.

📚 Maintenance: A Little Shuffle in the Documentation

  • Improved Examples: We've rearranged the furniture in our documentation's living room. By changing the order of definitions in our examples, we're hoping to make the learning journey for our users as smooth as a jazz tune. It's the same great content, just with a better flow.

🌟 Why This Matters?

This bugfix isn't just a technical tweak; it's about harmony in the code universe. When nested functions play nicely, your coding experience is smoother, and your projects are more stable. It's like ensuring all the Christmas lights twinkle in sync!

👍 Appreciation Alert

Big thanks to our community for flagging Issue #42. Your keen eyes are better than Santa's elves in spotting those tricky bugs!

So, grab this update and enjoy a more peaceful coding experience. Happy coding, and remember: in our digital workshop, every function, big or small, dynamic or static, deserves a happy home!


P.S.: If you stumble upon any more misbehaving code or documentation that could use a spruce up, let us know. Our New Year's resolution is to keep making things better! 🎉🛠️

1.4.0

28 Nov 17:47
Compare
Choose a tag to compare

GitHub Release Notes for Version 1.4.0 (2023-11-28)

🚀 Release Theme: "Optimizing the Optimizer!"

Hello, fellow coders and digital magicians! We've been busy brewing something special in our software cauldron, and voilà – version 1.4.0 is here! This release is all about adding a bit of spice to our validation recipe, making it smarter and more considerate of your code's nuances. Let's dive in!

New Features: Smarter Variable Validation at Your Service!

  • Variable Completeness Check: We've rolled up our sleeves and added a nifty optional validation feature that plays detective with your variables. But, the validation isn't just about checking if all variables are at the party; it's about understanding who really needs to be there based on your expression's context.

    • The Twist: If you've got optimization turned on (and that's the default, so you probably do), sonic now has the smarts to know that in an expression like a + 0*b, only a needs to RSVP. b can take the day off unless you turn off optimization, in which case, it's back to the party for b.

🔧 Maintenance: Spring Cleaning in Autumn!

  • Ghost Code Be Gone: We’ve hunted down and banished some dead code that was haunting our codebase. Think of it as an early spring cleaning, but in autumn, and for code.

🙏 A Big Thank You

A massive shout-out to our community for your continued feedback and support. You're the wind beneath our wings, the RAM in our computers, and the unsung heroes in our changelogs!

So, there you have it, folks! Gear up for a smoother, more intuitive coding experience with 1.4.0. Happy coding!

1.3.2

16 Nov 16:31
Compare
Choose a tag to compare

GitHub Release Notes for Version 1.3.2 (2023-11-16)

🐞 Release Theme: "Counting Negatives Positively!"

Hey there, code wranglers! We're back with another update for our beloved sonic, and this time it's all about giving negative numbers their due respect. Get ready for version 1.3.2, where we've fixed an elusive little bug that was playing hide-and-seek with our argument count validation.

🛠️ Bugfix: Argument Count Validation Gets a Makeover!

  • Issue Fixed: Remember Issue #37? You know, the one where arguments with a leading unary minus (those shy negative numbers) were feeling left out and not being counted in the argument validation process? Well, we've given our counting mechanism a pair of glasses, and now it can see those negatives clear as day!

    • Before: "-2" was just chilling out, not being counted.
    • After: "-2" stands tall and gets counted just like its positive pals.

🧐 Why This Matters?

We believe in equality for all numbers, whether they're big, small, positive, or negative. By fixing this bug, we're ensuring that every argument, no matter its sign, gets a fair chance to be part of the party. This isn't just a bugfix; it's a statement - in our world, every argument counts!

🤝 Thanks to Our Community

A huge shout-out to our eagle-eyed community members who spotted this sneaky bug. Your keen observations and relentless pursuit of perfection help us make our software the best it can be. Keep those reports coming!

So, there you have it, folks! Update to 1.3.2 and enjoy a more inclusive and accurate argument counting experience. Happy coding, and remember: in our book, every number counts!


P.S.: If you find any more numbers (or bugs) trying to play hide-and-seek, let us know. We're getting pretty good at this game! 🕵️‍♂️🔍

1.3.1

12 Nov 15:22
Compare
Choose a tag to compare

🌟 GitHub Release Notes - Version 1.3.1 (2023-11-12) 🌟

Welcome to Version 1.3.1, where we've made some improvements and tackled a bug. Here's the lowdown:

Changes 🛠️

  • Exception Enhancement: We've upgraded our exceptions. Now, ParseException and its kin have a new Expression property, providing additional context for debugging.

  • Test Coverage Tracking: Our GitHub project has started tracking test coverage. We're starting as is (79%) and will be working our way up from there. Our quality gates are 🟡 (yellow) for under 80% test coverage, and 🔴 (red) for under 60%. The goal for future releases is to maintain > 80% coverage.

Bugfix 🪲

  • Whitespace Fix: We fixed an issue where functions weren't recognized if there were white spaces between the function name and the opening parenthesis. Now, you can breathe easy; functions like sin (x) will be identified correctly as sin(x).

That's the scoop for Version 1.3.1. We aim to provide a smoother development experience with these enhancements and bug fixes. Thank you for your continued support! 🚀

1.3.0

06 Nov 21:05
Compare
Choose a tag to compare

🎉 Release Notes for Version 1.3.0 - "Operation Validation Extravaganza" 🎉

Summary:
In this release, we've cracked down on Jace's (and thus sonic's) loose validation, making it more strict than a security guard at a VIP party! Say goodbye to silently parsed typos and mixed-up orders of operators and operands. We've introduced a new validation step, making error detection easy as Sunday morning. Plus, we've simplified the code, improved performance, and made the validation optional, so you can choose whether to be the expression police or not.

Performance Improvements:

  • Reduced AST Builder's weight by sending it to the gym and removing (now) unnecessary operations.
  • AST Builder's function lookup doesn't do any unnecessary case conversions any more.
  • AST Builder's unary minus check is now better placed, so it only runs when it's actually sensible to do so.

Features:

  • 🕵️‍♂️ Added expression validation, because we're all about following the rules. Default on, but you can opt-out if you're feeling rebellious.
  • 🧐 "Validate()" method now available in Evaluator, so you can validate without committing to a relationship.
  • 🧩 New option to override the argument separator – because sometimes you need to mix things up.

Changes:

  • 🏗️ Major architectural facelift: We've tidied up our public API! Everything top-level is considered public, everything else is internals. You can still play with internals like ASTBuilder, but don't be surprised if we change those APIs without warning.
  • 🎭 Functions are now their own type of token. Now you can have your "a(123) + a" and eat it too! (In guarded mode, still expect the same exceptions.)
  • 📚 Public API documentation got a makeover – we're now ready for our close-up.
  • 📈 Benchmark now includes the shiny new validation feature.
  • (🔧INTERNAL) We now consistently call them "Parentheses," not "Brackets." No more mixups between AE and BE!

Bugfix:

  • 🐛 Fixed a bug where the argument separator and decimal separator had an identity crisis. Now they're distinct, just like superheroes and their secret identities.
  • 🧮 Unary minus handling for numerics got the attention it deserved. Say goodbye to '-3^2' evaluating to 9.0 – now it's -9.0! (Use '(-3)^2' if you really want 9.0, you rebel.)

Upgrade now and experience the validation revolution! Your expressions will thank you. 🚀

1.2.0

20 Sep 22:41
Compare
Choose a tag to compare

🚀 Release Note: Performance Boost and Bug Banishment! 🐛

Greetings, fearless code warriors!

In this small but mighty release, we've been working tirelessly behind the scenes to make your coding experience smoother than ever before. We've turbocharged your favorite math expression evaluation library with performance improvements that'll leave you wondering if your computer just did a few laps around the track.

What's on the menu, you ask?

🚀 Performance Improvements: We've given your code wings! We've improved the performance of constant folding and the interpreted mode. Your code will now execute with the speed of a caffeinated cheetah on roller skates.

🐞 Bug Banishment: Our team has been on a bug-squashing rampage. We've kicked those pesky critters out of your codebase, so you can enjoy bug-free bliss. No more late-night debugging marathons - it's time to relax! The cache is now fully disabled if you say so - which also has a positive performance impact when evaluating expressions exactly once.

🌟 User Experience: We've polished the rough edges, making the user interface smoother than a jazz saxophone solo. It's mostly namings and documentation, but hey: naming things is hard.

So go ahead, update your software and watch your productivity soar to new heights! We're not saying you'll become a coding wizard overnight, but with these performance improvements and bug fixes, you'll certainly feel like one.

Happy coding, and may your code compile flawlessly! 🧙‍♂️👨‍💻🚀

As always, you can download the new release directly from NuGet.