Skip to content

Latest commit

 

History

History
171 lines (149 loc) · 14 KB

CHANGES.md

File metadata and controls

171 lines (149 loc) · 14 KB

better-files follows the following MAJOR.MINOR.PATCH release conventions:

  • Changes in PATCH version:
    • Minor functionality changes (usually bug fixes)
    • No breaking public API changes
    • New APIs might be added
  • Change in MINOR version:
    • In addition to PATCH changes
    • Minor API shape changes e.g. renaming, deprecations
    • Trivial to modify code to address compilation issues
  • Change in MAJOR version:
    • In addition to MINOR changes
    • Significant structural and API changes

v4.0.0 [WIP]

  • (Planned) Issue #589: Methods that do I/O has parens ()
    • Migration Guide: Some APIs need extra parens e.g. file.size is now file.size() and dir.list is now dir.list()
  • PR #584: Remove implicit options from all APIs.
    • Migration Guide: Instead of implicit params like implicit charset: Charset, it is now explicitly passed in:
      // Before
      def appendText(text: String)(implicit charset: Charset = DefaultCharset)
      
      // Now
      def appendText(text: String, charset: Charset = DefaultCharset)
  • Issue #295: CloseableIterators fixes resource leaks on partial iterations (#270, #403, #553)
    • Migration Guide
      val lines: Iterator[String] = file.lines()  // This will auto close the underlying stream on iterator exhaustion
      
      lines.find(_ == "hello world") //This will auto close the stream if nothing is found OR if the item is found
      lines.take(10).size //This will close the stream even if stream has >10 lines
      
      // BEFORE: The above _partial_ operations would leave the stream open
      // NOW: The streams would be closed
      
      // If you still want the previous auto closing behaviour:
      lines.nonClosing().take(10).size // This would leave stream open if it has >10 lines
  • (Planned) Issue #88: Path ASTs for relative vs. absolute path
  • Issue #593: Remove compilation warnings for Scala 2.13 and Scala 3
  • Issue #624: Fix zip-slip vulnerability
  • (Planned) Issue #590: file.walk() can handle errors
  • (Planned) Issue #591: New APIs
  • (Planned) Issue #3: Walk File Tree APIs
  • (Planned) Issue #221: linkTo bug fix
  • (Planned) Issue #129: JSR-203 and JimFS compatibility
  • (Planned) Issue #88: Strongly typed relative and absolute path APIs
  • (Planned) Issue #204: Universal converter APIs
  • PR #573: Scala 3 Support!
  • PR #426: Add UnicodeCharset.isValid()
  • PR #428: Add File.resourcePathAsString
  • PR #436: Exclude destination zip file from final output
  • PR #429: Add URI and URL helpers
  • Issue #478: Handle broken symlinks in size()
  • Issue #412: Better error message when URI is not a valid file
  • Issue #417: Fix NoSuchMethodError when reading contentAsString on JDK8
  • Issue #283: Fix resource not closing bug on File#list
  • Issue #279: Better manage open file handles in recursive deletion of large directories
  • Issue #285: Add canonical file/path APIs
  • PR #290 Add maxDepth to File#glob and File#globRegex
  • Issue #193: Handle fast changing directory watching on Windows
  • Issue #195: Do not swallow FileAlreadyExistsException when creating directory or file
  • Add method to check verified file existence (or non-existence)
  • Issue #198: InputStreamOps#asString doesn't close the stream on exception
  • PR #199: Utils for Object I/O
  • PR #200: GZIP APIs
  • Issue #140: Batch up events for file monitoring
  • Issue #136: Use execution contexts for file monitoring
  • Issue #152: Streamed unzipping
  • Issue #150: ManagedResource[File] for temp files
  • Issue #126: New Typeclassed approach to ARM
  • Issue #160: Ability to convert Reader/Writer to Input/Output streams
  • Issue #77: Better UNIX-y behaviour for cp and mv DSL utils
  • Issue #169: Support for symbols in file DSL
  • Issue #171: Handle createDirectories() on symlinks to existing directories
  • PR #99: Release for Scala 2.12
  • PR #78: Change write(Array[Byte]) to writeByteArray(). Same for append
  • Issue #76: Move better.files.Read typeclass to better.files.Scanner.Read