duckling v0.2.0.0 Release Notes

  • Core

    • Bump versions on dependencies
    • ExampleMain: add support for setting the port
    • Support for GHC >= 8.8.x && GHC <= 9.0.1
    • Relicense to BSD-3
    • Probabilistic layer bug fix
    • Remove dependency on Data.Some
    • Depend on regex-pcre-builtin on Windows
    • Update cabal-version to 2.2
    • Migrate to GitHub CI over Travis
    • Some attempts at getting smaller parse trees (less exploitable)

    Rulesets

    • Common

      • Correct CDT TimeZone offset CDT is (-300), not 540.
      • Fixed BST and IST offsets. BST is +1 (60) and IST is +5:30 (330)
      • Make unicode output in tests sane by not relying on Show
      • Add type=value to JSON response for Email, PhoneNumber, and Url, for consistency
      • CreditCardNumber: new! (duckling can now recognise credit cards)
      • Email: Add DE (German) + IS (Icelandic) spelled out email
      • Numeral: Don't accept dashes ('-') as token separators
      • Time: Add Karva Chauth holiday
      • Time: Add Vaisakhi holiday
      • Time: Add daylight savings start/endtimes to holidays
      • Time: Add Purim and Shushan Purim (Jewish holidays)
      • Time: Add Guru Gobind Singh Jayanti holiday
      • Time: Extend support for Ramadan and Eid al-Fitr from 1950 to 2050
      • Time: Add support for Parsi New Year
      • Time: Add support for Dayananda Saraswati Jayanti holiday
      • Time: Extend support for Mawlid from 1950 to 1998
      • Time: Add Rabindra Jayanti holiday
      • Time: Add Guru Ravidass Jayanti holiday
      • Time: Extend support for Eid al-Adha from 1950 to 2000
      • Time: Add Krishna Janmashtami holiday
      • Time: Add Mahavir Jayanti holiday
      • Time: Add Maha Shivaratri holiday
      • Time: add Ugadi holiday
      • Volume: interval support
    • AF (Afrikaans)

      • Numeral: new!
    • AR (Arabic)

      • Add a new locale: EG (Egyptian)
      • AmountOfMoney: Add more variants of EGP
      • Numeral: Add support for numerals written in Arabic script
      • Numeral: Support decimals and comma-separated integers
      • PhoneNumber: new!
      • Time: Add periodic times
      • Time: Add rule for a week ago
    • BG (Bulgarian)

      • Time: new!
    • BN (Bengali)

      • Numeral: new!
    • CA (Catalan)

      • Numeral: new!
      • Ordinal: new!
    • DA (Danish)

      • Ordinal: Add support for larger spelled-out ordinals
      • Time: recognise abbreviation 'kl'
    • DE (German)

      • Distance: new!
      • Duration: Add more common durations
      • Numeral: Fix typo on "fünfzehn"(15)
      • Time: Fix wrong parsing of YYYY-MM-DD dates
      • Time: Add rule for 'the day before yesterday'
      • Time: Fix a bug for "fünfter"¬
      • Time: support for "am ersten Dezember" to " am einunddreißigsten Dezember"¬
      • Time: now recognise "der fünfte Dezember"¬
      • Time: Add support for (pre-)computed holidays
      • Time: Don't parse 'so'
      • Time: improve approximations
      • Time: Add rule for week after next
      • Time: Add rule for montag in n wochen
      • Volume: new!
    • EN (English)

      • AmountOfMoney: Add support for subunits of dollars, e.g. nickels, dimes, quarters, as well as the number of coins
      • AmountOfMoney: Add support for latent
      • AmountOfMoney: Add support for lakh and crore
      • AmountOfMoney: correct regex to match three letter currency codes beginning with C
      • AmountOfMoney: Make ruleInterval{Max,Min} symmetric
      • AmountOfMoney: Support abbreviations of lakh and crore
      • AmountOfMoney: Add UAH currency
      • AmountOfMoney: Add HKD
      • AmountOfMoney: dollar and <amount-of-money>
      • AmountOfMoney: dollar and a half
      • AmountOfMoney: intersection for <amount-of-money> and a half
      • AmountOfMoney: extend interval support
      • AmountOfMoney: Add more variants of EGP
      • Distance: Support composite distances
      • Distance: one meter and <distance>
      • Distance: <distance> meters and <distance>
      • Distance: Add interval support
      • Duration: Fix composite durations without delimiters. It previously only worked with commas/'and'-separated tokens
      • Duration: Support more words in ruleDurationNumeralMore
      • Duration: <integer> and a half minutes
      • Duration: support for <integer> hour and <integer>
      • Duration: parse Xm as X minutes and X.Y hrs as X.Y hours
      • Duration: Leverage TimeGrain for x.y hours
      • Duration: Support composite duration
      • Numeral: Fix ambiguous parses when both ruleNegative and ruleMultiply apply
      • Numeral: Extend fraction rule
      • Numeral: Add mixed fraction rules
      • Numeral: Add prefix of 10/100/10_000 rules
      • Quantity: Support 'k.g' and 'k.g.' for kilograms
      • Temperature: Support temperatures with decimal values
      • Time: Fix palm sunday regex
      • Time: Fix latent time of days like "ten thirty"
      • Time: Don't parse time of days above 12 with meridiem like "13 am"
      • Time: Add rule to match <time> + <timezone>
      • Time: Add "all week"/"rest of the week" rules
      • Time: Parse time intervals like: 2015-03-28 17:00:00/2015-03-28 21:00:00
      • Time: Add rules to handle "DD/MM/YYYY" or "DD MM YYYY"
      • Time: Add support for YYYYQQ and YYQQ expressions, like '2018Q4' and '18Q4'
      • Time: Add rule for 'during <month>'
      • Time: Restrict 'on' absorption to days
      • Time: Fix durations, upper intervals should all be exclusive
      • Time: Fix grain on some intervals for time-of-days
      • Time: Add rule 'in <duration> at <time-ofday>
      • Time: Add <datetime> - <datetime> (interval) timezone rule
      • Time: '<day> in <duration> should only operate on grain > Hour
      • Time: Add '<integer> <day-of-week> from <time>' rule
      • Time: Add <duration> past <time>
      • Time: Make 'the week' resolve to interval from today to end of week
      • Time: Add support for <hour>h<min>
      • Time: Add rule for a quarter after <hour-of-day>
      • Time: Support 'Martin Luther Kings Day'
      • Time: Add more holiday aliases (Veteran Day, Mardi Gras, St. Paddy's Day)
      • Time: Intersect "9 tomorrow morning"
      • Time: Support 'Chinese New Years'
      • Time: Support "Saint" Patrick's Day
      • Time: Add Ratha-Yatra Holiday
      • Time: Add support for Ganesh Chaturthi holiday
      • Time: Add rama navami holiday
      • Time: Add '<part-of-day> at <time-of-day>' rule
      • Time: Modify 'this|last|next <cycle>' to capture things like "the month" in "the first Saturday of the month"
      • Time: Support 'the <day-of-month> of <month>'
      • Time: Add Orthodox Good Friday holiday
      • Time: The (nth) closest (day) to (time)
      • Time: Add rule for 'midday'
      • Time: Fix a problem with parsing fractional minutes
      • Time: parse 'upcoming xxx weeks' and 'xxx upcoming weeks'
      • Time: Add new rule to parse phrase in the pattern 'xxx minutes to <hour-of-day>
      • Time: Add support for spelled-out times
      • Time: Add support to parse <ordinal> <day-of-week>
      • Time: Fix parsing 'next <day-of-week>'
      • Time: Treat 'coming' as 'next'
      • Time: Make duckling time not treat 0:xx and 12:xx ambiguously
      • Add 'asap', 'at the moment' to EN time
      • Parse latent year intervals
      • Time: last <duration>
      • Time: <time> <day-of-month>
      • Volume: Extend interval support
      • Time: Handle 2-digit date in existing DD/MM/YYYY rule
    • EN_UK (English, United Kingdom)

      • Duration: new!
      • Time: new!
    • EN_US (English, United States)

      • Time: Super Tuesday
    • ES (Spanish)

      • AmountOfMoney: Add support for intervals
      • Duration: Add support for parsing phrases like half hour, quarter of an hour
      • Duration: Support composite durations
      • Numeral: Fix typo of 22 (veinto -> venti)
      • Numeral: Add locale rules, since Spain and South America use different decimal separators
      • Numeral: parse 'cero dos' as 'dos'
      • Numeral: composite numerals
      • Ordinal: Add missing 'tercer' regex
      • Quantity: new!
      • Time: Add support for periodic holidays
      • Time: Fix ruleYearLatent to not match numerals that could be hours
      • Time: Make 'n horas' latent
      • Time: Fixed a problem with parsing 'day of month' that contains 'dia'
      • Time: Add rule for 'next week'
      • Time: <ordinal> <day-of-month>
      • Time: support for 'noon'
      • Time: Allow para before timestamps
      • Time: Add rule to parse '<time-of-day> (in the afternoon)'
      • Time: Add rule to parse 'last <day-of-week> of <time>'
      • Time: Add rule for next week
      • Time: Add more corpus for tomorrow so that tomorrow latent doesn't prevail
      • Time: Fix multi-word timestamps
    • FA (Persian)

      • Numeral: new!
    • FI (Finnish)

      • Numeral: new!
    • FR (French)

      • Temperature: Support temperatures with decimal values
      • Time: Update month interval rules to handle ordinals and spelled-out numerals (e.g. "du premier au quinze juin")
      • Volume: Add 'Centilitre' type
    • HE (Hebrew)

      • AmountOfMoney: add more rules
    • HI (Hindi)

      • Duration: Pakhwada (पखवाड़ा) is 15 days n, not a fortnight
      • Duration: Add support for composite duration
      • Duration: Add support for specific times
      • Numeral: Support more numerals
      • Temperature: new!
      • Time: Add support for quarter till, quarter past, and half
    • ID (Indonesian)

      • AmountOfMoney: support intervals
    • IS (Icelandic)

      • Numeral: new!
    • IT (Italian)

      • AmountOfMoney: new!
      • Distance: new!
      • Duration: Fix ruleDurationAgo
    • KA (Georgian)

      • AmountOfMoney: new!
      • Duration: new!
      • Numeral: new!
      • Ordinal: new!
      • Time: new!
      • Time: Improvements for times in the past
      • Time: Add support for quarters
    • KM (Khmer)

      • Distance: new!
      • Numeral: new!
      • Ordinal: new!
      • Quantity: new!
      • Temperature: new!
      • Volume: new!
    • KN (Kannada)

      • Numeral: new!
    • KO (Korean)

      • AmountOfMoney: support intervals
    • LO (Lao)

      • Numeral: new!
    • ML (Malayalam)

      • Numeral: new!
      • Ordinal: new!
    • MN (Mongolian)

      • Numeral: new!
    • NL (Dutch)

      • AmountOfMoney: make decimal thousands separator optional
      • Duration: Add 'anderhalf uur'
      • Duration: support composite durations
      • Quantity: new!
      • Time: Add support for King's Day (Koningsdag)
      • Time: stop 'for <number>' from resolving as times
      • Volume: remove gallon
      • Volume: Fix typo in milliliter
    • NO (Norwegian)

      • AmountOfMoney: Parse more currencies
      • Numeral: The written numeral 8 had a typo: "otte" -> "åtte"
      • Numeral: Parse powers of ten with spaces as well as dots
      • Numeral: Add more textual powers of ten
      • Numeral: Parse textual numbers from 21 to 99 with and without spaces
      • Time: Add support for half an hour before as e.g. "halv to"
      • Time: Add support for alternative clock denotation "klokka"
      • Time: Add support for alternative tomorrow denotation "i morra"
      • Time: Add some more unambiguous datetime parsing
    • 💅 PL (Polish)

      • Numeral: Add support for seventy, eighty, ninety
      • Duration: Fix typo: miej -> mniej
      • Time: Add 'evening' to corpus
    • PT (Portuguese)

      • Ordinal: Add 13..99
      • Ordinal: Corpus, keep accents consistent
      • Time: Last and quarter expressions
    • RO (Romanian)

      • Numeral: Fix multipliers with values above 20 In Romanian, for numerals above 20, we say '20 de milioane', not '20 milioane'.
      • Time: Implement 'the day after tomorrow'
    • RU (Russian)

      • AmountOfMoney: Add UAH currency
      • Numeral: Be more permissive with numerals [20, 90]
      • Time: new!
    • SK (Slovak)

      • Numeral: new!
    • SW (Swahili)

      • Numeral: new!
    • TA (Tamil)

      • Ordinal: new!
    • TE (Telugu)

      • Numeral: new!
    • TH (Thai)

      • Numeral: new!
    • TR (Turkish)

      • AmountOfMoney: new!
      • Time: new!
    • VI (Vietnamese)

      • AmountOfMoney: Add interval support
      • AmountOfMoney: ruleNg, ruleDollar, ruleVND modified to better capture usage of VI
      • Numeral: Add "ngàn" common synonym of "nghìn", and "chục", colloquially used to count tens.
      • Numeral: Remove ? in some regex where they don't make sense
      • Time: Fix double-digit month matching
      • Time: don't parse ngày
    • ZH (Chinese)

      • Duration: Add more common expressions
      • Numeral: Add more common expressions
      • Time: Parse YYYY-MM
      • Time: Value before month can be integer or chinese char
      • Time: Add support for (pre-)computed holidays
      • Time: Add more common expressions
      • Volume: new!

    Server

    • Skip logfile creation if no logging
    • Document how example application can use specific dimensions only
    • Use System.FilePath.Posix instead of System.FilePath
    • Use all dimensions by default
    • Load timezones more leniently
    • Docker: Reduce size of image drastically
    • Dockerfile: Use Debian Buster