{"push_id":973294375,"size":14,"distinct_size":14,"ref":"refs/heads/2.11.x-Scaladoc-ProductN-off-by-one","head":"b501cb82cd85743a4479efa14a993a1502565775","before":"63d5fc152993e92a5aca61dc3822a1d69f33c102","commits":[{"sha":"ecee7b75328ae1f856b5fa832ebad7fc9e42f64a","author":{"email":"bae1c57b9128467560d9172d2ad9b5d97637ccc6@novocode.com","name":"Stefan Zeiger"},"message":"SI-9623 Avoid unnecessary hasNext calls in JoinIterator & ConcatIterator\n\nThese iterator implementations are used to concatenate two (JoinIterator)\nor more (ConcatIterator) other iterators with `++`. They used to perform\nmany unnecessary calls to the child iterators’ `hasNext` methods.\n\nThis improved state machine-based implementation reduces that number to\nthe bare minimum, i.e. iterating over concatenated iterators with\n`foreach` calls the children's `hasNext` methods a total of (number of\nchildren) + (number of elements) times, the same as when iterating over\nall children separately.","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/ecee7b75328ae1f856b5fa832ebad7fc9e42f64a"},{"sha":"dcc455ad9ce1159fab122d677fda84132f52059d","author":{"email":"bae1c57b9128467560d9172d2ad9b5d97637ccc6@novocode.com","name":"Stefan Zeiger"},"message":"Document when the `scala` command starts/uses a compilation daemon","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/dcc455ad9ce1159fab122d677fda84132f52059d"},{"sha":"f8d6814bb4fb0248d6121335e67eee8fde7ce455","author":{"email":"bae1c57b9128467560d9172d2ad9b5d97637ccc6@novocode.com","name":"Stefan Zeiger"},"message":"SI-9624 Improve documentation for TraversableOnce\n\n- Move the doc comment for `hasDefiniteSize` up from TraversableLike\n  to GenTraversableOnce and improve it.\n\n- Add a note to `GenTraversableOnce.isEmpty` that implementations must\n  not consume elements.\n\n- Clarify alternatives to subclassing TraversableOnce.","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/f8d6814bb4fb0248d6121335e67eee8fde7ce455"},{"sha":"b51fe3d4d01405a0bcfc586af337736cfe4e0478","author":{"email":"8287c3bf2f3045ed7dda958850d2b0fdb9e67898@gmail.com","name":"Jason Zaugg"},"message":"Convenient aliases for the SBT build\n\nThe idea here is to avoid the need for switching\nbetween the SBT shell and Bash.\n\n  - Add aliases for partest, scala{,c,p,doc}\n  - Change working directory for these forked processes\n    to the root project base directory, rather than the\n    subprojects base directory. This lets us use relative\n    paths to files in a more familar way.\n  - Don't log the output of forked processes with the\n    `[info] ` prefix, rather pass it through directly\n    to stdout.\n\nDemo:\n\n```\n> partest --terse test/files/pos/t6231.scala\n[info] Packaging /Users/jason/code/scala2/build-sbt/pack/lib/scala-partest-javaagent.jar ...\n[info] Done packaging.\nSelected 1 tests drawn from specified tests\n\n.\n\n[info] Passed: Total 1, Failed 0, Errors 0, Passed 1\n[success] Total time: 3 s, completed 05/02/2016 12:44:19 PM\n> scala sandbox/test.scala\n[info] Running scala.tools.nsc.MainGenericRunner -usejavacp sandbox/test.scala\nHello, World!\n[success] Total time: 4 s, completed 05/02/2016 12:45:08 PM\n> scalac sandbox/test.scala\n[info] Running scala.tools.nsc.Main -usejavacp sandbox/test.scala\n[success] Total time: 3 s, completed 05/02/2016 12:45:15 PM\n> scala Test\n[info] Running scala.tools.nsc.MainGenericRunner -usejavacp Test\nHello, World!\n[success] Total time: 1 s, completed 05/02/2016 12:45:20 PM\n> scala\n[info] Running scala.tools.nsc.MainGenericRunner -usejavacp\nWelcome to Scala 2.11.8-20160204-090931-42525ec (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_71).\nType in expressions for evaluation. Or try :help.\n\nscala> 1.to\nto   toBinaryString   toByte   toChar   toDegrees   toDouble   toFloat   toHexString   toInt   toLong   toOctalString   toRadians   toShort   toString\n\nscala> 1.toString\nres0: String = 1\n\nscala> :quit\n[success] Total time: 8 s, completed 05/02/2016 12:45:48 PM\n>\n```","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/b51fe3d4d01405a0bcfc586af337736cfe4e0478"},{"sha":"fcaa3ab36f934ccd1b6cd6098ed62fdf49981dbc","author":{"email":"8287c3bf2f3045ed7dda958850d2b0fdb9e67898@gmail.com","name":"Jason Zaugg"},"message":"Add tab completion to the partest command\n\nWe can complete partest options (I've excluded some that\naren't relevant in SBT), as well as test file names.\n\nIf `--srcpath scaladoc` is included, completion of test\npaths will be based on `test/scaladoc` rather than\nthe default `test/files`. Note that the `--srcpath` option\nis currently broken via scala partest interface, this\nchange to scala-partest is needed to make it work:\n\n   https://github.com/scala/scala-partest/pull/49\n\nI've also hijacked the `--grep` option with logic\nin the SBT command itself, rather than passing this\nto `partest`. Just like `./bin/partest-ack`, this looks\nfor either test file names or regex matches within\nthe contents of test, check, or flag files.\n\nI tried for some time to make the tab completion of\nthousands of filenames more user friendly, but wasn't\nable to get something working. Ideally, it should\nonly suggest to `test/files/{pos, neg, ...}` on the\nfirst <TAB>, and then offer files on another TAB.\nFiles should also be offered if a full directory\nhas been entered. Hopefully a SBT parser guru will\nstep in and add some polish here.","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/fcaa3ab36f934ccd1b6cd6098ed62fdf49981dbc"},{"sha":"504ac0d635d36e94dc6241a43cfba88b36c9a889","author":{"email":"8287c3bf2f3045ed7dda958850d2b0fdb9e67898@gmail.com","name":"Jason Zaugg"},"message":"Enable IntellIJ smarts while editing the build\n\nEven though our build can't be imported into IntelliJ\nautomatically, we don't need to live in the dark ages\nof red squigglies when editing build.sbt.\n\nThis commit hand-crafts the module defintion for the\nproject, which has SBT and its dependendencies on the\nclasspath.\n\nA screenshot of the code assist is worth the thousand\nexpletives I uttered while writing the pictured code\nwithout this facility:\n\n  https://www.dropbox.com/s/6mxv0iwxkhvnor7/Screenshot%202016-02-07%2022.09.12.png?dl=0\n\nTo download the sources for the SBT JARs that are referenced\nherein, run\n\n    sbt> reload plugins\n    sbt> updateClassifiers","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/504ac0d635d36e94dc6241a43cfba88b36c9a889"},{"sha":"ef4ed496c59e4b54266aaf20db917fb41bb9f1e4","author":{"email":"25a3b6cc85a8cde49f8b0f9aa21c050bc04072d4@tisue.net","name":"Seth Tisue"},"message":"Merge pull request #4937 from szeiger/issue/9623-2.11\n\nSI-9623 Avoid unnecessary hasNext calls in JoinIterator & ConcatIterator","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/ef4ed496c59e4b54266aaf20db917fb41bb9f1e4"},{"sha":"db0577c840425e699197c409b09674d5ce2039ac","author":{"email":"8287c3bf2f3045ed7dda958850d2b0fdb9e67898@gmail.com","name":"Jason Zaugg"},"message":"Add SBT tab completion for scala{,c,doc}\n\nAlso refactor the partest parser to use the improved tab\ncompletion for test paths.","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/db0577c840425e699197c409b09674d5ce2039ac"},{"sha":"c3fcd4e5b0c8f03862ecf4f92fd43cf2fb8f5066","author":{"email":"8287c3bf2f3045ed7dda958850d2b0fdb9e67898@gmail.com","name":"Jason Zaugg"},"message":"Micro optimise Symbol#fullName\n\nThe old approach of recursively calling `fullNameAsName`\ncreates a lot of garbage for intermediate results, in\naddition to needless interning of those results into\nthe name table.\n\nThis commit instead creates a string buffer of the\ncorrect capacity and writes the component names\ndirectly into this.\n\nI compared old and new approaches and this shows a 2x\nspeedup.\n\n```\nscala>  val th = ichi.bench.Thyme.warmed(verbose = print)\nth: ichi.bench.Thyme = ichi.bench.Thyme@1643e817\n\nscala> val w_old = th.Warm(sym.fullNameAsNameOld('.'))\nw_old: th.Warm[$r.intp.global.Name] = ichi.bench.Thyme$Warm@7a8d001b\n\nscala> val w_new = th.Warm(sym.fullNameAsName('.'))\nw_new: th.Warm[$r.intp.global.Name] = ichi.bench.Thyme$Warm@1ec14586\n\nscala> th.pbenchOffWarm(\"\", x => println(x))(w_old, 10, \"old\")(w_new, 10, \"new\")\nBenchmark comparison (in 4.084 s)\n    old vs new\nSignificantly different (p ~= 0)\n  Time ratio:    0.53572   95% CI 0.51618 - 0.55525   (n=20)\n    old    64.54 ns   95% CI 62.41 ns - 66.67 ns\n    new    34.57 ns   95% CI 34.04 ns - 35.11 ns\nres3: $r.intp.global.Name = scala.collection.parallel.mutable.ParSeq\n```\n\nIt is still expensive enough that we should still consider\ncaching. The call to full name in `classBTypeFromSymbol`\nin the new backed is a prime candidate for optimization.","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/c3fcd4e5b0c8f03862ecf4f92fd43cf2fb8f5066"},{"sha":"8f8f81b72ef07140952aeb76120bd032e35cc918","author":{"email":"25a3b6cc85a8cde49f8b0f9aa21c050bc04072d4@tisue.net","name":"Seth Tisue"},"message":"Merge pull request #4950 from retronym/topic/sbt-tweaks-3\n\nSBT build improvements","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/8f8f81b72ef07140952aeb76120bd032e35cc918"},{"sha":"2a6c652b0d08809a85bd8d0ec28fa82c181c28ee","author":{"email":"c4c4cd0781e8a49d848921386970d334ffda1135@typesafe.com","name":"Lukas Rytz"},"message":"Merge pull request #4928 from szeiger/wip/document-e-nc\n\nDocument that `scala -e` starts/uses a compilation daemon","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/2a6c652b0d08809a85bd8d0ec28fa82c181c28ee"},{"sha":"f9fdc5a7a8cce995b982b4a77c25bd9dba740ec4","author":{"email":"c4c4cd0781e8a49d848921386970d334ffda1135@typesafe.com","name":"Lukas Rytz"},"message":"Merge pull request #4939 from szeiger/issue/9624\n\nSI-9624 Improve documentation for TraversableOnce","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/f9fdc5a7a8cce995b982b4a77c25bd9dba740ec4"},{"sha":"c0a6ab2376f08013c923de4e10bfdb925d0ee728","author":{"email":"c4c4cd0781e8a49d848921386970d334ffda1135@typesafe.com","name":"Lukas Rytz"},"message":"Merge pull request #4954 from retronym/topic/fullname\n\nMicro optimise Symbol#fullName","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/c0a6ab2376f08013c923de4e10bfdb925d0ee728"},{"sha":"b501cb82cd85743a4479efa14a993a1502565775","author":{"email":"16a62443a5028415d77ae4907f0bac481d0a7ace@gmail.com","name":"Janek Bogucki"},"message":"Fix off-by-one documentation error in Product<N>\n\nSanity check:\n\n  scala> case class P2(i: Int, j: Int)\n  defined class P2\n\n  val p2 = P2(1, 3)\n\n  p2.productElement(0)\n  res0: Any = 1\n\n  p2.productElement(1)\n  res1: Any = 3\n\n  p2.productElement(2)\n  java.lang.IndexOutOfBoundsException: 2\n    at P2.productElement(<console>:10)","distinct":true,"url":"https://api.github.com/repos/janekdb/scala/commits/b501cb82cd85743a4479efa14a993a1502565775"}]}