Skip to content

Releases: soulverteam/SoulverCore

2.2.2

17 Sep 08:21
Compare
Choose a tag to compare

Minor change to the percentage evaluation logic

"100% + 0.5 = 150%" (previously the result was a decimal, "1.5").

Additional rounding functions

  • "37 to nearest 10", "349 rounded to nearest hundred"

Additional units

  • bars, millibars, and decimeter (+ square/cubic decimeters)

Bug fixes

  • Fixed an issue where certain Korean characters were being misinterpreted

In this release, SI notational symbols (other than k, M, G & T) have been removed as they were less obvious than scientific notation in most cases

Built with Xcode 14 & Swift 5.7

2.2.1

24 Aug 13:27
Compare
Choose a tag to compare

This is a version of SoulverCore 2.2 built with Xcode 13 & Swift 5.6

SoulverCore 2.2 added sophisticated string parsing features. They're a bit like Regex, but wayyyyyy cooler, and more human friendly 🐶.

Check out the dedicated repository to learn more

2.2.0

23 Aug 17:46
Compare
Choose a tag to compare

This version adds sophisticated string parsing & data point extraction features to SoulverCore. A bit like Regex, but wayyyyyy cooler, and human friendly 🐶.

Check out the dedicated repository on the topic to learn more

This build of SoulverCore was created with Xcode 14, and Swift 5.7.
Please continue to use SoulverCore 2.1.1 if you're still on Xcode 13.

2.1.1

16 Aug 10:39
Compare
Choose a tag to compare
  • Support for ' and " as feet and inches synonyms
  • Added additional API on CurrencyList to get access to the supported real-world, crypto and commodity currencies in SoulverCore

2.1.0

09 Aug 17:01
Compare
Choose a tag to compare

Perfomance

  • This release improves average calculation performance by 4x over SoulverCore 1, thanks to meticulous work optimizing four of the most perfomance-critical parts of the expression processing pipeline.
  • Another factor contributing to this dramatic increase in performance was compiling the framework using Swift's "Optimize for Speed" compiler flag (in previous builds we used "Optimize for Size"). The trade-off is an overall increase to SoulverCore's file size of 2MB (or 500 KB zipped).

Benchmarks

  • M3 Max (MacBook Pro): 11,627 calculations / second
  • M2 (MacBook Air): 7,751 calculations / second
  • M1 Max (MacBook Pro): 7,194 calculations / second
  • M1 Pro (MacBook Pro): 6,944 calculations / second
  • 2.4 GHz i9 (MacBook Pro): 3,636 calculations / second
  • 3.6 GHz i3 (Mac Mini): 2,976 calculations / second

2.0.3

02 Aug 19:09
Compare
Choose a tag to compare

Calendar Calculations

  • Unix timestamps for the current moment now include today's date
  • Support for datestamps with the form "4th of July", "The 4th of July", and "July the 4th"

Bug fixes

  • Fixed an issue where SoulverCore could throw a fatal error if a client's bundle was moved to a different location after being launched. This was due to a prerequisite resource file being missing when requested from the Bundle. All required resources are now eagerly loaded into memory when a Calculator or LineCollection is created (and they only use < 0.5mb of memory).

2.0.2

04 Jul 16:35
Compare
Choose a tag to compare
  • Bug fixes

2.0.1

07 Jun 23:30
Compare
Choose a tag to compare

Dates

  • Date results that are in the current year will now show the year stamp depending on whether all dates in the expression are from the current year or not (i.e June '17 + 2 weeks = 1 July', but '29 December 2021 + 3 weeks = 19 January 2022')
  • Stricter logic for when slash formatted dates are recognized as dates rather than divisions
  • Dot formatted dates are never recognized in locales where dot is used as a decimal point

Units

  • Support for "oz" as both a unit of mass or volume (fl oz) depending on the expression context

Word Functions

  • Added a 'divided by' phrase

2.0.0

04 Jun 21:37
Compare
Choose a tag to compare

New CurrencyRateProvider protocol (breaking change)

  • There is a new currencyRateProvider property on an EngineCustomization
  • A currency rate provider returns rates on demand. This is an improvement from SoulverCore 1.x, where rates were set on an EngineCustomization object directly. This meant you had to recreate your LineCollection or Calculator objects with a new EngineCustomization whenever the rates changed
  • The CurrencyList class is no longer available. If you used it to fetch rates from Nomics and/or CurrencyLayer, you will need to fetch those rates yourself and provide them to SoulverCore via an object that conforms to CurrencyRateProvider

New scientific units

  • Force (newtons, poundals, & pounds of force)
  • Accelleration (m/s^2, ft/s^2)
  • Torque (newton meters, pound feet, pound inches)
  • Pressure (pascals, atmospheres, bars, pounds per square inch)
  • Angular velocity (radians/s, revolutions/s, revolutions/min)
  • Angles (arc second and arc minute)
  • Substance (moles, molar)
  • Electrical units (electric conductance, inductance, capacitance, magnetic flux and flux density)
  • Fuel consumption (liters/km, liters/100 km) & fuel economy (miles/gallon, km/liter)

Statistics of lists of numbers

total/sum of 9, 12, 4, 2, 8 (= 35)
average of 5, 6 and 20 (= 10.33)
median of 9, 3, 4, 12 = (6.5)

Inflation

what is $500 today worth in 1997 (= $285.44)
what is $285.44 from 1997 worth today (= $500.0)
$1 from 1997 is worth what today (= $1.75)

Inflation predicting

what will $500 be worth in 2024 given 5% inflation (= $453.51)
value of $500 in 2024 assuming 5% inflation (= $453.51)
purchasing power of $500 in 2024 at 5% inflation (= $453.51)

New conditional syntaxes

a = 5 if b > 4 else 3
a = if b > 4 then 5 else 3
x = 900 unless y = 30

Bitwise operators

0b1100 | 0b1110 (= 0b1110)
0b0101 & 0b1010 (= 0b0)
0b1010 xor 0b1011 (= 0b1)
0b100 << 1 (= 0b1000)
0b100 >> 2 (= 0b1)

Sales Tax/GSTVAT calculations

sales tax in $50
$129 - VAT

To use this feature, set a variable on your VariableList whose definition is SalesTax EvaluationResult:

var variable = Variable(name: "sales tax", value: nil)
variable.definition = EvaluationResult.salesTax(SalesTax(decimalValue: 0.15))

Screen Density

  • ppi of 15" screen at 1024x768 (= 85.33 PPI)

Cars & Tyres

  • speed of 12 inch tyre at 522 rpm = (18.63 mph)

Bug fixes

  • Numerous minor bug fixes

1.4.5

05 Apr 21:00
Compare
Choose a tag to compare
  • Support for boolean and (&&), or (||) and not (!) operators
  • Support for converting units of frequency into pitch
  • Added ability to convert frequency to wavelength (and vice versa)
  • Misc improvements to how rates are handled in certain cases
  • Fixed an issue with the asinh function not returning an answer with certain values