All Versions
Latest Version
Avg Release Cycle
26 days
Latest Release

Changelog History
Page 6

  • v18.5.0 Changes

    • scrooge-generator: Add support for construction_required fields in cocoa. PHAB_ID=D163127
    • scrooge-generator: Add cocoa initializer for each field in union. PHAB_ID=D156591
    • ๐Ÿ‘ scrooge-generator: Add support for empty struct in cocoa. PHAB_ID=D156539
    • scrooge-generator: Fix setter bug for non-primitive type in cocoa. PHAB_ID=D156605

    • 0๏ธโƒฃ scrooge-adaptive: Turn the scrooge-adaptive off as default in ScroogeRunner due to incompatibility with sbt > 1.0.2. PHAB_ID=D163144

  • v18.4.0 Changes

    • ๐Ÿ‘ scrooge-generator: Add support for construction_required fields. Add a validateNewInstance method to all generated scala companion objects. PHAB_ID=D148841

    • scrooge-core: Check for corruption in size meta field of container and throw an exception if size is found corrupted. PHAB_ID=D150057

    • โฌ†๏ธ scrooge: Upgrade libthrift to 0.10.0. PHAB_ID=D124620

  • v18.3.0 Changes

    • ๐Ÿ‘ scrooge-generator: Add support for mutually recursive structs. PHAB_ID=D134470
  • v18.2.0 Changes

    • scrooge-generator: Add asClosable method to ServicePerEndpoint and ReqRepServicePerEndpoint interfaces as well. PHAB_ID=D134171

    • ๐Ÿšš scrooge-generator: Remove unused functionToService and serviceToFunction methods along with ServiceType and ReqRepServiceType type aliases in order to simplify code generation.

    NOTE: This functionality can be manually replicated by users if/when needed to convert between a Function1 and a Finagle Service. PHAB_ID=D132171

    • scrooge-generator: Scala generated client now has a asClosable method returns c.t.u.Closable, client now can be closed by calling client.asClosable.close. Note that asClosable won't be generated if it is also defined by the user. PHAB_ID=D129645

    • scrooge-generator: Renamed subclasses of com.twitter.scrooge.RichResponse: ProtocolExceptionResponse, SuccessfulResponse, and ThriftExceptionResponse. These case classes are for representing different response types and should be only used by the generated code. PHAB_ID=D132202

  • v18.1.0 Changes

    • โšก๏ธ scrooge-generator: Update c.t.fingale.thrit.service.MethodPerEndpointBuilder to build MethodPerEndpoint types. Add new ThriftServiceBuilder for building the higher-kinded form from a ServicePerEndpoint. Users should prefer using the MethodPerEndpointBuilder. PHAB_ID=D127538

    • ๐Ÿ“‡ scrooge-generator: Add more metadata to generated java objects PHAB_ID=D122997 Includes:

      • struct and field annotations from the idl files
      • which fields have default values
      • which field values of TType.STRING are actually binary fields
    • ๐Ÿ‘ scrooge: Add support for scrooge.Request and scrooge.Response types in generated ThriftMethod code. PHAB_ID=D122767

  • v17.12.0 Changes

    • scrooge: Introduce scrooge.Request and scrooge.Response envelopes which are used in ReqRepServicePerEndpoint interfaces and associated code. The scrooge Request and Response allow for passing "header" information (via ThriftMux Message contexts) between clients and servers. For instance, a server can implement a ReqRepServicePerEndpoint, and set response headers along with a method response, e.g.,

    .. code-block:: scala

     class MyService extends MyService.ReqRepServicePerEndpoint {
       def foo: Service[Request[Foo.Args], Response[Foo.SuccessType]] = {[Request[Foo.Args], Response[Foo.SuccessType]] { request: Request[Foo.Args] =>
           val result = ... // computations
                 headers = Map("" -> Seq(Buf.Utf8("value1"))),

    This ServicePerEndpoint can then be served using ThriftMux:

    .. code-block:: scala

     ThriftMux.server.serveIface(":9999", new MyService().toThriftService)

    These response headers will be transported as Mux#contexts to the client. If the client is using the client-side ReqRepServicePerEndpoint it will be able to read the headers from the returned Response directly. E.g.,

    .. code-block:: scala

     val client = ThriftMux.client.reqRepServicePerEndpoint[MyService.ReqRepServicePerEndpoint]
     val response: Response[Foo.SuccessType] = Await.result(
     if (response.headers.contains("")) {

    Users can also choose to wrap the ReqRepServicePerEndpoint with a MethodPerEndpoint via ThriftMux.client.reqRepMethodPerEndpoint(reqRepServicePerEndpoint) in order to deal with methods instead of services. See the scrooge documentation for more information. PHAB_ID=D107397

  • v17.11.0 Changes

    • ๐Ÿ—„ scrooge-generator: Deprecated some scala generated classes and use new ones

      • FutureIface -> MethodPerEndpoint,
      • MethodIface -> MethodPerEndpoint.apply(),
      • MethodIfaceBuilder -> MethodPerEndpointBuilder,
      • BaseServiceIface -> ServicePerEndpoint,
      • ServiceIface -> ServicePerEndpoint,
      • ServiceIfaceBuilder -> ServicePerEndpointBuilder.

    To construct a client use c.t.f.ThriftRichClient.servicePerEndpoint instead of newServiceIface, to convert ServicePerEndpoint to MethodPerEndpoint use c.t.f.ThriftRichClient.methodPerEndpoint instead of newMethodIface. PHAB_ID=D105791

    • scrooge-generator: (BREAKING API CHANGE) Change the java generator to no longer generate files with org.slf4j imports and remove limited usage of org.slf4j Logger in generated services. PHAB_ID=D108113
  • v17.10.0 Changes

    • ๐Ÿš€ From now on, release versions will be based on release date in the format of YY.MM.x where x is a patch number. PHAB_ID=D101244

    • ๐Ÿšš scrooge-generator: For generated scala $FinagleService, moved per-endpoint statsFilter to the outermost of filter chain so it can capture all exceptions, added per-endpoint response classification in statsFilter. PHAB_ID=D100649

    • scrooge-generator: Generated scala $FinagleClient takes a RichClientParam for all configuration params, such as TProtocolFactory, ResponseClassifier, maxReusableBufferSize, and StatsReceiver, $FinagleService takes a RichServerParam. PHAB_ID=D83190

    • ๐Ÿ”Œ scrooge-sbt-plugin: Renamed ScroogeSBT.thriftConfig to ScroogeSBT.ThriftConfig for sbt 1.0.0. PHAB_ID=D101910

  • v4.20.0 Changes

    No Changes

  • v4.19.0 Changes

    • scrooge-generator: Generated scala/java code now is using serviceMap instead of functionMap for Finagle services' method implementation. PHAB_ID=D73619 for scala and PHAB_ID=D76129 for java

    • scrooge-generator: Generated Java code now is using c.t.s.TReusableBuffer to reduce object allocations. This in turn adds scrooge-core as dependency for generated java code. PHAB_ID=D60406

    • ๐Ÿ‘ scrooge-generator: support for thrift struct field doccomments for scala generated code RB_ID=918179

    • scrooge-generator: The MethodIface in generated Scala code implements FutureIface. It already "was" that type in practice but did not implement that trait. PHAB_ID=D67289

    • ๐Ÿ‘ scrooge-generator: Generated Cocoa code now supports modular frameworks and removes some compiler warnings about implicit casts. PHAB_ID=D74200