Release Notes

19.10.1

  • airspec: Add inGitHubAction and inCI (#762) [0765f11]
  • airframe-control: Add retryableFailure(e).withExtraWaitMillis/Factor (#761) [40b7a58]
  • airframe-http-finagle: Add Finagle.client builder (#760) [48f44cb]
  • airframe-control: Use this.copy for RetryContext (#759) [4251c84]
  • airframe-http: Support patch, patchOps, deleteOps methods (#755) [7603f16]
  • Internal changes
  • Enhancement of GitHub Actions configuration

19.10.0

  • This is a maintenance release for migrating to GitHub Atcions. There is no feature change. (#749) [74f84b5]

19.9.9

  • This version is only for internal changes.
  • From this release, airfarme will use GitHub actions.
  • Update scalafmt-core to 2.1.0 (#747) [c851834]
  • Migrate to GitHub Actions (#744) [f543442]
  • Update sbt-scalafmt to 2.0.6 (#745) [daa7e8f]
  • Update sbt-sonatype to 3.8 (#746) [a6e8db0]

19.9.8

19.9.7

  • Add support for Scala.js 1.0.0-M8 (#732) [48a58e5]
  • airspec: Show the deatailed reason of MISSING_DEPENDENCY (#729) [1c24971]
  • airframe-msgpack: Optimize JSON->MsgPack stream conversion (#725) [6a07fb4]
  • internal changes:

19.9.6

  • airframe-codc: Fix AnyCodec to proceed cursor when Nil is found (#722) [3d82c26]
  • airframe-msgpack: Add MessagePack.fromJSON(JSONSource) (#721) [584ccbf]
  • airframe-config: Use left-aligned config display (#719) [2a20752]
  • internal: Use .cache folder for coursier (#720) [cb4fca7]

19.9.5

  • airspec: Deprecate configure(design) (#714) [9277263]
  • airspec: Isolate spec loggers (#718) [7ea85f8]
  • airframe-di: Fix duplicated Closeable hook registration (#704) [0ca5da2]
  • airframe-config: Add @secret annotation (#710) [c82008f]
  • airframe-http-recorder: Add PathOnlyMatcher (#711) [e92536c]
  • airframe-http-recorder: Add name config (#709) [26d3cba]
  • airframe-http: Remove redundant Router nesting (#708) [cdc410c]
  • airframe-http-finagle: Update finagle-core, finagle-http, … to 19.9.0 (#694) [c587c86]- airframe-http-finagle: Add finagleBaseDesign for using FinagleServerFactory (#707) [ea8d56b]
  • airframe-http-finagle: Fix FinagleServer lifecycle (#703) [ce9ef85]
  • airframe-jdbc: Update postgresql to 42.2.8 (#717) [43e63f7]
  • Internal Changes:

19.9.4

  • airframe-http-finagle: Support streaming JSON/MsgPack responses for Reader[X] (#691) [4ebe0ec]
  • airframe-http-finagle: Support Reader[Buf] stream response (#690) [fb237f7]

19.9.3

  • Deprecate airframe-tablet (#684) [6d2bb77]
  • airframe-jdbc:
  • airframe-fluentd
    • Update fluency-core, fluency-fluentd, … to 2.4.0 (#681) [bc1e5bc]
  • airframe-codec
  • airframe-di
  • Update javax.annotation-api to 1.3.2 (#669) [1ca65c4]
  • airframe-config
    • Use airframe-codec instead of airframe-tablet for mapping Yaml to Objects
    • Update snakeyaml to 1.25 (#679) [81ae0a9]
  • internal changes:

19.9.2

  • airframe-di: Fixes #658. Do not remove shutdown hook thread while it is running (#661) [60f35d3]
  • internal changes for Travis CI builds:
    • Add sonatypeDropAll before the release [5de0594]
    • [doc] Support doc only release [25073d2]
    • Split publish tasks (#659) [1d72f22]

19.9.1

  • airframe-di:
    • Fix an issue in 19.9.0 which closes Sessions unexpectedly by calling Session.close().
    • Move lifecycle related code to wvlet.airframe.lifecycle (#657) [a51927c]
    • Deprecate LifeCycle trait as it confuses the owner of the resource when traits are mixed into other classes
  • airframe-http-recorder: Reduce unecessary warning messages for in-memory recorders.
  • internal: Revert to the previous release script [3f802b7]

19.9.0

  • airframe-di: #651 Support design-time lifecycle hooks (#655) [de526a5]
  • airframe-di: Ensure running all shutdown hooks (#653) [56cf14a]
  • airframe-di: Automatically register shutdown hooks for Closeable resources (#645) [937342b]
  • ~airframe-di: Add interfaces to define LifeCycle hooks~ (#656) [cf161ec]
  • airframe-http: Fix Option[X] arg binding (#642) [9e9e509]
  • airframe-http-finagle: Upgrade to Finagle 19.8.0 (#652) [e30d400]
  • airframe-msgpack: Add a stream json-msgpack converter (#643) [b20fd4e]
  • internal changes:
    • Release only Scala 2.12 projects for snapshots [b2a8d92]
    • Upgrade to sbt 1.3.0-RC5 (#647) [ff4d209]
    • Add note on airspec and aiframe-log integration [61af200]
    • Use scalafmt 2.0.1 syntax (#654) [46eb9a1]

19.8.10

  • airspec: synchonize logger cleanup to stabilize tests [121ef76]
  • airframe-http-recorder: Avoid unnecessary db update [6353233]
  • airframe-http-client: use a consistent header customization order #638 (#639) [576b9c9]
  • airframe-http-finagle: Make FinagleServer start/stop idempotent (#637) [bc39b75]
  • airframe-surface: Support inner classes (#635) [112a3f9]
  • airframe-di: Fix #632 to run inherited lifecycle hooks (#633) [c9ccafe]
  • internal changes:

19.8.9

  • airspec: Support AirSpec.design, localDesign (#631) [dfd7a86]
    • This also fixes an issue in finding test methods defined in sub classes.
  • internal: Run tests in parallel (#629) [779f80d]
  • internal: Upgrade to sbt 1.3.0-RC4 (#628) [5a0807b]

19.8.8

  • airframe-http-recorder: Fix exclude flag behavior (#627) [c73d8a7]
  • airframe-http-client: Add HOST header if missing (#626) [7d1c91e]
  • airframe-di: Fix design option override (#625) [576fab7]
  • airspec: Support skipping the whole spec (#624) [f7d5f59]
  • airframe-http-finagle: Add sendRaw(request) (#623) [c54da5e]
  • airspec: Add inCicleCI (#622) [972f9bf]

19.8.7

  • airframe-http-recorder: Store records to .airframe folder (#619) [e22b5ed]
  • airframe-http-recorder: Support custom http request matchers (#618) [37aea23]
  • Upgrade to sbt-dyvner 4.0.0 (#617) [02fee65]
  • Upgrade scalafmt to 2.0.1 (#616) [4112e95]
  • airspec: Add airspec-light project settings (#615) [34e56f6]

19.8.6

  • airspec
    • Fix shouldNotBe null error message [c869db1]
    • #612: Fixes java.lang.ClassNotFoundException: scala.reflect.api.Trees (#613) [06b70d8]
    • #610: Avoid registering JVM shutdown hooks in airspec sessions (#611) [44b84d3]
  • internal: Upgrade to sbt 1.3.0-RC3 with turbo mode (#614) [59d9d48]

19.8.5

  • airspec: Fix log message duplication issue (#609) [4536123]
  • airspec: Support shouldBe null (#607) [78c87dd]
  • airframe-log: Handle InstanceAlreadyExistsException at logger JMX mbeam registration (#608) [bd13110]

19.8.4

  • AirSpec is renamed to a simple package wvlet.airspec.
    • airspec: Rename to wvlet.airspec (#605) [6d6ff91]
    • airspec: Add optional PropertyBased testing [9fbe8ca]
    • airspec: #597: Add AirSpecContext to run nested tests (#602) [a41211a]
    • Make airspec an all-in-jar (#601) [18d3970]
    • airspec: Add assertEquals(a, b, delta) [2ca677a]
    • airspec: Add inTravisCI checker [9302a70]
    • airspec: Return Nothing for asserts throwing exceptions [7fb68e2]
    • Migrated all airframe module tests from ScalaTest to AirSpec
  • airframe-surface: disable createObjectFactry for abstract classes in Scala.js [45b22ac]

19.8.3

  • AirSpec:
    • airspec is now a standalone project without any cyclic dependencies to airframe module (#592) [d0db028]
    • Support shouldBe matchers (#590) [0caf159]
    • Always use ANSI color logs for Travis CI (#596) [1c791fd]
  • internal chaange: airframe-control: Use AirSpec for test cases (#594) [d08c603]
  • Upgrade to Scala.js 0.6.28 (#593) [00e88ab]

19.8.2

  • airspec: Use airframe-log for AirSpec logging for improving the log messages (#584) [857ae2c]
  • internal: Migrate test cases of airframe-log/surface to airspec

19.8.1

  • AirSpec: Added a new function-based testing library for Scala and Scala.js #580
    • source code: https://github.com/wvlet/airframe/tree/master/airspec
  • airframe-scalatest: Rename airframe-spec to airframe-scalatest [51f8922]
  • airframe-surfaace: Support symbolic method names in Scala.js [57d67fe]
  • airframe-surface: Sort methodSurface based on the source code order [bdf1a86]
  • Handle ClassNotFound issue of sbt-1.3.x by cleaning-up all custom LogHandlers [e70ab0d]

19.8.0

  • airframe-http-recorder: Support binary requests and responses (#579) [a0c5894]
  • airframe-http-recorder: Support custom recording (#578) [d9b8ed2]
  • airframe-json: Throw IntegerOverflow exceptions for too big numbers (#575) [0e541ee]
  • airframe-benchmark: Aggregate benchmark programs (msgpack-benchmark, json-benchmark) into one project (#573) [67656ba]
  • #475: Use Scala 2.13 compatible collection syntaxes (#572) [6f20a16]
  • airframe-json: Use exhaustive match for JSONValue.value (#571) [f138d74]
  • airframe-http: Support Router.add[Filter], andThen[Filter] (#570) [8335c39]
  • airframe-http: Wrap exceptions with Future for each filter and context (#569) [1324385]

19.7.6

  • airframe-http-recorder: #559 Support expiration (#567) [32a0224]
  • airframe-http: Allow setting FinagleServer name (#566) [3f810f1]
  • airframe-http: Return the last failed response with HttpClientException (#565) [2099555]
  • airframe-http-recorder: Exclude unnecessary request headers from records (#563) [2246316]
  • airframe-http-recorder: Exclude Date header from request hash (#562) [8b75221]
  • airframe-http-recorder: Use case-insensitive request hashing (#561) [20467a6]
  • airframe-http-recorder: Add createRecorderProxy (#557) [bbba4db]
  • Rename airframe-macros to airframe-di-macros (#560) [9a6e871]

19.7.5

  • airframe-http: Support reading raw response as is (#553) [1ccedae]
  • airframe-http-client: Add getResource for GET with query strings (#552) [fd5849c]
  • airframe-http-client: Support customizing http requests #550 (#551) [1542beb]
  • airframe-http: Add HttpFilter support to Router (#540) [1cb7096]

19.7.4

  • airframe-log: GraalVM support (#549) [df8b408]
  • airframe-http: Fix over routing in airframe-http (#547) [4eb6245]
  • airframe-config: Allow reading config files from classpath, and add more examples (#544) [697b04e]
  • airframe-json: Reuse StringBuilder #381 (#546) [04bd01f]

19.7.3

  • airframe-metrics: Add TimeWindow.howMany(unit), minutesDiff, etc. (#545) [77f7be9]

19.7.2

19.7.1

  • airframe-http: Fix routing when common token is present in the path (#535) [abdea65]
  • Add example of programmable http-recorder (#532) [cbab375]
  • fix type annotation syntax (#534) [1b3daa1]
  • remove unused string interpolations (#533) [a2267ac]
  • airframe-http-finagle: Upgrade to Finagle 19.6.0 to support chunked reader [61a0316]
  • airframe-http-client: Add requestFilter [c32ba1e]
  • airframe-di: Show binding line numbers (#530) [a136907]

19.7.0

  • airframe-http-recorder: Programmable HTTP mock server (#529) [f33cdba]
  • HTTP support in http-recorder (#527) [4365522]
  • airframe-control: Add Retry.retryable/nonRetryableFailure method (#524) [4a7744b]
  • airframe-codec: Add convenient methods to convert JSON <-> Scala object (#519) [0c6bd55]
  • airframe-codec: #513: Handle empty inputs at unpackJson and unpackMsgPack (#514) [99d9cc6]
  • internal: Upgrade to sbt-1.3.0-RC2 (#510) [3583430]

19.6.1

19.6.0

19.5.2

19.5.1

  • Support Scala 2.13.0-RC2 (#500) [7c3b329]
  • Recover Scala 2.11 build as Spark 2.4.x still uses this Scala version for a while. (#498) [30561c7]

19.5.0

  • The first release of the new Reiwa era!
  • From this version, we will no longer support Scala 2.11. This is because Spark 2.4.2 now uses Scala 2.12 by default, and Spark has been the only reason for us to keep maintaining Airframe releases for Scala 2.11. (#496) [4e37be8]
  • Add more Airframe DI code examples (#495) [8d3b311]

19.4.2

  • airframe-http: Add HttpClient (#482) [4bb9463]
  • airframe-control: Simplified Retry interface so that it can be used as an independent module.

19.4.1

  • Add Scala 2.13.0-RC1 support. (#487) [3eb68a8]
  • airframe: Support DI tracing and coverage stats (#486) [143c629]
  • airframe-control: Add trace logs and JMX monitoring to Parallel (#481) [29141a5]
  • airframe-codec: Support JSONValue, Json (raw json string) (#484) [70022a4]
  • Add airframe code [examples (#485) [2e585b9]
  • internal: Replace fluentd-standalone to MockFluentd (#488) [fd7d075]

19.4.0

  • airframe-http: Fix shared http path prefix match (#483) [a0cb0b0]
  • airframe-http: NFA-based fast HTTP route mapping (#469) [27d2193]
  • airframe-jmx: Fix JMX methods extraction (#480) [6c9e628]
  • airframe-codec: Make hasNext idempotent as a workaround for https://github.com/scala/bug/issues/11453 (#471) [6c542eb]
  • internal: Remove Stream[X] usage for Scala 2.13.0 compatibility (#477) [d92426f]

19.3.7

  • airframe-jmx: Add the default JMXAgent(#465) [f9937e5]
  • airframe-jmx: Fix the registration of Scala-specific class names (#461) [f853bf0]
  • airframe-http: Remove the unnecessary finatra dependency (#464) [681b006]

19.3.6

  • airframe-json: Add JSON.parseAny(json) (#458) [bce0589]
  • airframe-http: Support Router.add[X].add[Y]… syntax (#456) [0ec6430]

19.3.5

  • airframe-http: Accept: application/x-msgpack response support (#448) [ccb55b7]
  • airframe-http: Support non-JSON content body (#446) [f351916]
  • airframe-http: Show the cause of an exception upon an internal server error (#447) [52a6b02]
  • airframe-http-finagle: Upgrade to Finagle 19.2.0 (#442) [f6d3941]
  • airframe-codec: Support MsgPack type (= Array[Byte]) codec (#441) [5923aac]
  • airframe-codec: #437 Case-insensitive enum mapping (#439) [5b26e5a]
  • airframe-jdbc: Upgrade sqlite-jdbc to 3.27.2 for upsert support (#445) [b7f3a57]
  • airframe-surface: Add Zero.register(surface, A) (#440) [f16002f]
  • airframe-launcher: Fixes #435. Hide the default command from the help message (#438) [bcdd154]
  • airframe-msgpack: Add a msgpack benchmark using JMH (#437) [e5f8526]

19.3.4

  • airframe-http-finagle: Fixes #432: Router should be given from FinagleServerConfig (#433) [a6a0687]
  • airframe-sql: Embed table names into query signatures (#431) [37e8f7a]
  • airframe-control: Implicit classes for parallel map syntax sugar (#429) [09dd9d8]

19.3.3

  • airframe-http-finagle: Support adding tracing to FinagleServer (#430) [1ab7281]
    • Since this version Router needs to be included in FinagleServerConfig(port, router) instead of using bind[Router]
  • airframe-fluentd: Upgrade to Fluency 2.1.0 and disable SSL by default (#428) [bb3498e]
  • airframe-sql: A new module for SQL parsier and logical query plan models

19.3.2

  • airframe: Fix compilation error of bind[X].toInstance when using scope-local objects (#423) [4840a93]
  • airframe-json: Fix StackOverflowError when parsing large arrays of JSONObjects (#421) [1ef5a02]

19.3.1

  • airframe-http: Allow more flexible http path routing (#418) [76b7995]
  • Add airframe overview illustration [3cbdb45]
  • Add README for modules (#416) [93e1b89]
  • Move launcher annotations to Java src folder to reduce compiler warnings [ce58f6e]

19.3.0

  • #413: Add a workaround for bind[X].toInstance(…) compilation error [9d0da31]
  • Fixes #373 Resolve build[X] compilation error in Scala 2.12 [31c929c]
  • Support reading String as JSON array or map (#411) [b5e4956]
  • Add ResultSetCodec.toJsonSeq (#409) [61c9627]
  • airframe-control: Add a simple library Parallel for parallel execution (#406) [e04166e]

19.2.1

  • airframe-fluentd: Fluency 2.0 based Fluentd interface (#404) [bd9d75e]
  • airframe-codec: Add MessageCodec.toJson (#405) [8fbdcab]

19.2.0

  • From this version, we will use YY.MM.(patch) version numbers.
  • Add codecs for airframe-metrics (#403) [112d2f6]
  • Add MessageCodec.unpackJson (#402) [cc0f9b3]
  • Add Design.empty (#398) [bbeaa06]
  • Use @command(isDefault=true) instead of @defaultCommand (#397) [55439e5]
  • Add translucent background logo [e2b0ac2]
  • Add codecs for converting JDBC ResultSets to msgpack (#391) [9d0f29b]
  • Add ServerAddress for passing host and port data (#390) [3b7e083]
  • Upgrade to scala.js 0.26 (#388) [a415c71]
  • Add airframe-http-recorder (#380) [d34702f]
  • Upgrade Finagle to 19.1.0 (#379) [a211073]
  • Add airframe-canvas, an off-heap memory buffer library (#367) [e55a3f4]

0.80

  • Add ArrayJSONCodec to parse JSON array string (#375) [8c624a7]
  • Get ConfigHolders directly from Design (#374) [da4d3ba]
  • Not ignore resource closing exception in withResource (#371) [129868a]
  • airframe-stream is moved to wvlet/msgframe (#365) [d150ae8]
  • Fixes #362: Set Option[Boolean] with –(option) in airframe-launcher (#364) [f383c5e]
  • Change airframe-control to a Scala JVM project (#363) [5d6632d]
  • Set the code coverage test threshold to 80% overall, 5% diff (#361) [0519d4b]

0.79

  • Enhance loan pattern for AutoCloseable (#359) [f971934]
  • Add name conversion functionallity to CName (#360) [366caca]
  • Allows using bindFactory outside of wvlet.airframe package (#358) [d8836e4]
  • Upgrade to Scala 2.11.12 (#356) [bc6b172]

0.78

0.77

  • airframe-launcher: Fix array argument mapping (#342) [00145b6]
  • Upgrade to Scala 2.12.8 (#341) [b5b6f9e]
  • internal: Enhance SQL parser

0.76

[airframe DI]

  • Support creating child sessions with session.withChildSession. #321
  • Improve Design.+ performance by checking Design duplicates right before building a new Session (#334) [3e13659]
  • Add session id to logs [0cbd9cc]
  • Improved the debug log message by showing session hierarchy and injection behavior [05c014d]
  • [internal] Do not register shutdown hooks for child sessions to avoid closing loggers [a6460cd]

[airframe-launcher]

  • [bug] Fix in getting the default values of method arguments. (#339) [438f2cc]

[airframe-log]

  • Show logs during shutdown hooks by using a custom LogManager so as not to close logger during shutdown hooks [4dffce2]
  • Show millisec in log timestamps (#335) [7b6ec05]

[misc.]

0.75

  • airframe-di: Fix a bug the default values in a constructor are registered as singletons [40d97ca]
  • airframe-control: Allow passing retry context (#327) [afb34b9]
  • [internal] Upgrade to sbt 1.2.7 (#325) [b6ebaf1]

0.74

  • Airframe now has its brand logo!

logo

  • airframe-launcher: Fix sub method command help message [3b22d74]
  • Deprecate in-trait bindInstance[X] (#317) [1f15aef]
  • Deprecate in-trait bindSingleton[X] now that bind[X] binds singletons by default (#300) [fe75bb0]
  • airframe-http: Register a trait factory when Route.of[A] is called (#307) [2cf505b]
  • airframe-surface: Rename surface.of[X] -> Surface.of[X] (#306) [cea2cbb]
  • airframe-codec is now a pure-Scala SPI (#302) [7677d26]
  • airframe-codec: Scala.js support (#303) [ff7bd97]
  • Internal changes:
    • airframe-macros is now a pure Scala project (#319) [43ec5d5]
    • Add an aggregated project for Scala community-build (#316) [fa78beb]
    • Upgrade to sbt-microsites 0.7.26 [40f0b7f]
    • Fix twitter icon card [0217f54]
    • Update logos [e295e8e]
    • Add a workaround: Surface.of[A] throws InternalError on REPL (#308) [1be3796]

0.73

  • airfarme-opts is redesigned as airframe-launcher Option parser v2 (#295) [a270128]
  • Support netsted offset in time window (#296) [0c6e218]
  • Add untruncate notation ) to offset of time window [3d479be]
  • Add wvlet.airframe.log.init for using default log configurations (#291) [a08d15d]
  • Use fluentd-standalone 1.2.6.1, which supports Scala 2.13.0-M5 (#289) [ed7012b]

0.72

  • Support Scala 2.13.0-M5 (#232) [c31a4da]
    • Notice: Due to a bug of Scala 2.13.0-M5, serialization of Design objects may not work when using sbt with Scala 2.13.0-M5. Using fork in Test := true is a workaround.

0.71

0.70

  • airframe-control: Add a shell command launcher (#287) [1339caf]
  • Upgrade to sbt 1.2.6 (#285) [614dba6]
  • Fix typos in docs

0.69

0.68

  • Support JDK11 (#265) [7e8799d]
  • Use openjdk because we will mostly use this free JDK versions (#266) [fd7f641]
  • Upgrade to Scala 2.12.7 for Travis builds [ce10f55]
  • Remove snapshot repo resolver to speedup dependency download (#267) [247fa28]

0.67

0.66

0.65

  • Seamless integration with airframe-config and Design: https://wvlet.org/airframe/docs/airframe-config.html#using-with-airframe
    • import wvlet.airframe.config._ to use newly added binding methods: bindConfig[X], bindConfigFromYaml[X](yamlFile), etc. (#248) [379332b]
    • Deprecated airframe-bootstrap
  • Allow setting log levels using wvlet.logger JMX MBean (#247) [962d6c2]

0.64

  • Support higher kinded types more naturally (#244) [e21baef]

0.63

  • Support higher-kinded type bindings. (#242) [cfe35ed]
  • Upgrade to scala.js 0.6.25 (#243) [fc91387]
  • Change withoutLifeCycleLogging -> noLifeCycleLogging [501b88b]

0.62

  • Add unpackBytes for compatibility (#240) [ecd8367]
  • Truncate to duration unit when the exact date is given to the offset (#239) [68d497e]

0.61

  • Support bind[Design] to reference the original design (#237) [7d362c9]

0.60

  • Added Design.withoutLifeCycleLogging, Design.withProductionMode, Design.withLazyMode
  • Support Future[X] return type in http-finagle (#230) [3642cc6]
  • Upgrade to scalafmt 1.5.1 (#231) [da84852]

0.59

  • Do not escape forward slashes in JSONStrings (#229) [66f77f6]
  • Fix a bug when reading None in OptionCodec (#228) [cda0d36]

0.58

  • use canonical names for arguments of method surface on MethodCallBuilder (#227) [33cad91]

0.57

  • Move wvlet.config to wvlet.airframe.config (#226) [e103a89]
  • Allow setting object codec factory for generating natural JSON responses (#224) [0b42960]
  • Use private[this] to optimize json parsing (#225) [8432af8]

0.56

0.55

  • airframe-http: Add rest mapping (#207) [43bcb0a]
    • Support HTTPRequest binding, request body to custom class binding
  • airframe-json performance optimization (#214) [7b83bea]
  • Drop jdk9 build for time saving [dc96c00]

0.54

  • Add airframe-json. A fast JSON parser for Scala and Scala.js. This also supports JSON pull parsing.
  • Add release automation script (eeb4d2b)

0.53

0.52

  • Support Scala 2.13.0-M4

0.51

  • airframe-log: Add Logger.clearAllHandlers (#195)

0.50

  • airframe-control: Add a code for retrying code execution
  • airframe-stream: Add a simple SQL parser/interpreter for stream processing https://github.com/wvlet/airframe/projects/1

0.49

  • Important: bind[X], bind[X].to[Y], etc. now use singleton bindings by default. This is because most of the use cases expect binding the same objects to traits. If you need to explicitly instantiate objects for each binding, use bindInstance[X] or bind[X].toInstanceOf[Y].
  • Add a handy method to start a session and build an object: Design.build[A]{ a => ... }.
  • Support eager singleton initialization with Design.buildProduction[A] and Design.withProductionSession.
  • (internal) Upgrade to sbt 1.1.6, Scala.js 0.6.23, scalajs-java-logging 0.1.4

0.48

  • Java 9/10 support
  • airframe-msgpack. Fixes a bug in encoding Timestamp (Instant) values
  • airframe DI: Enhanced warning/error messages upon missing dependencies.

0.47

  • airframe-msgpack: Add a pure Scala MessagePack implementation

0.46

  • Add airframe-bootstrap to define application modules that can be configured with airframe-config and DI
  • Upgrade to Scala 2.12.6

0.45

  • airframe-codec: Support List[X] coding
  • airframe-surface: Support Parameter.getDefaultValue and Parameter.get(obj) in Scala.js

0.44

  • airframe-metrics: Require minus sign to represent last time ranges (e.g., -7d, -1h, etc.)
  • airframe: Enable bind[Session] binding to retrieve the current session

0.43

  • airframe-log: Set a default log handler (JSConsoleLogHandler) for Scala.js for convenience

0.42

  • airframe-log: Add an option to totally disable logging code generation.

0.41

  • Fix a singleton binding bug: If bind[A].toSingletonOf[B] is used and A is non-abstract trait, A was used instead of B.

0.40

  • airframe-launcher: Fixes #147 when reading the default values of nested options

0.39

  • Add a unified scaladoc for all modules

0.38

  • airframe-tablet: Using json4s-native instead of play-json for Scala 2.13.0-M3 support

0.37

  • airframe-tablet Add play-json based JSONCodec to enable transformation between JSON <-> MessagePack <-> Object.
  • Temporarily remove Scala 2.13.0-M2 build. Now preparing 2.13.0-M3 build in #143

0.36

  • Fixes Logger.scanLoglevels to use given log level files appropriately #141

0.35

  • Minor fixes to project structures and build scripts.

0.34

  • No major change in terms of features, API.
  • Airframe now uses sbt-dnyver for auto versioning.
  • For each commit in the master branch, you can find a snapshot version from https://oss.sonatype.org/content/repositories/snapshots/org/wvlet/airframe/
  • The release versions will be like 0.34 as usual and available from Maven central.

0.33

  • Add airframe-jdbc, a reusable JDBC connection pool implementation.

0.32

  • Fix ObjectCodec for map type value #131

0.31

  • Support recursive types

0.30

  • airframe-metrics: Add support for Scala.js (DataSize, ElapsedTime)
  • Add ElapsedTime for succinct duration representation

0.29

  • Add airframe-codec, a MessgePack-based schema-on-read data transcoder.

0.28

  • Add support for Scala 2.13.0-M2

0.27

  • aiframe-config: Fixes nested case class binding #108
  • Dropped support of Scala.js + Scala 2.11 combination. Scala.js libraries will support only Scala 2.12 (or higher) in upcoming releases

0.26

0.25

  • airframe-log Upgrade the internal log rotation library to logback-core 1.2.3
  • Upgrade to Scala 2.12.4 and sbt 1.0.3.

0.24

0.23

  • Moved to org.wvlet.airframe organization because Airframe will have more modules in future.
  • Added airframe-spec (a common library for testing airframe modules)

0.22

  • Add Logger.clearAllHandlers to clean-up existing log handlers set by third-party libraries
  • Apply scalafmt code style

0.21

0.20

0.19

0.18

  • Add beforeShutdown, onInject lifecycle hooks
  • Support @PostConstruct and @PreDestroy JSR-250 annotations (Scala.js is not supported)
  • Fix to call onInit, onStart only once for singletons

0.17

  • Upgrade to Scala 2.12.3, Scala.js 0.6.19
  • Add Design.add
  • Fix a bug, onStart lifecycle hook is not called when a session is already started
  • Fix to use default constructor argument values for constructor bindings
    • Note: Scala.js does not support default parameter binding yet

0.16

  • Support reading Map type values in YamlReader (airframe config)

0.15

  • Surface will be generated by using runtime-type information. This improves the compilation speed in Scala JVM projects.
    • Scala.js version still uses compile-time surface generation
  • Interface change: Surface.of[X] to surface.of[X].
    • This is for providing different implementations of Surface for ScalaJVM and Scala.js.
  • Fixed an issue when tagged type is used inside constructor parameters.
  • Fixed an issue that lifecycle hooks are wrongly called when debug level logging is used.
  • Merged wvlet-config as airframe-config. This module is useful for creating configuration objects from YAML file.

0.14

  • Surface is now a part of Airframe
  • Added RuntimeSurface for the convenience of creating Surface from runtime-type information (reflect.universe.Type)
  • Added ObjectBuilder to build objects from Surface information

0.13

  • Add tagged binding support

0.12

  • Airframe is now refrection-free.
    • Using a reflection free Surface instead of ObjectSchema
    • Cyclic dependencies now can be found at compile-time thanks to Surface
  • Initial Scala.js support
  • Split Travis build process for the matrix of Scala 2.12/2.11, ScalaJVM/JS
  • Add shortcut for life cycle events: bind[X].onInit/onStart/onShutdown
  • Deprecated tagged type binding. Instead you can use type alias bind[(type alias)].
  • Deprecated @PreDestroy, @PostConstruct lifecycle binding because it complicates the order of life cycle hooks when mixed in
  • Deprecated passing Session as a class parameter or method return value.
  • Simplified Scala macro codes

0.10

  • Session now implements AutoClosable
  • Add Design.withSession{ session => … } to close Session at ease

0.9

  • Add Scala 2.12 support

0.8

  • Split the project into two sub projects: airframe and airframe-macro. However, you only need airframe.jar for using Airframe.
  • Improved the performance by replacing run-time code generation to compile-time code generation #25
  • Upgrade to wvlet-log 1.0
  • Upgrade wvlet-obj 0.26 (support type aliases)
  • Allow binding to type aliases

0.7

  • Fix lifecycle management of objects generated by bindSingleton

0.6

  • Add bindSingleton[X]

0.5

  • Fix a bug in FILO order init/shutdown when objects are singleton
  • Add toProvider/toSingletonProvider/toEagerSingletonProvider
  • Add Design.remove[X]

0.4

  • Improved binding performance
  • Fix FIFO lifecycle hook executor
  • Improved injection logging

0.3

  • Support bind(ObjectType).toXXX

0.2

  • Add lifecycle manager
  • Reorganize Session, Design classes
  • Test coverage improvement
  • Deprecated Design.build[X]. Use Design.newSession.build[X]

0.1

  • Migrated from wvlet-inject