{"push_id":906288934,"size":121,"distinct_size":121,"ref":"refs/heads/master","head":"ba74dd361333236c05b6b1611049ece94b62fd71","before":"0529af9b11decdbfcf53eff78133916f1d628735","commits":[{"sha":"9020b38577c69c348eb49c88c1e60d8ac7e95d1c","author":{"email":"99328387f8334f68433c424d2dfd83062f62754b@cognitect.com","name":"Alex Miller"},"message":"CLJ-1161 Omit version.properties file in -sources jar for release builds\n\nSigned-off-by: Stuart Halloway <stu@cognitect.com>","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/9020b38577c69c348eb49c88c1e60d8ac7e95d1c"},{"sha":"865e478a808365f87a027843f5da2a3b82bfd659","author":{"email":"80754af91bfb6d1073585b046fe0a474ce868509@clojure.com","name":"Hudson @ build.clojure.org"},"message":"[maven-release-plugin] prepare release clojure-1.8.0-RC4","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/865e478a808365f87a027843f5da2a3b82bfd659"},{"sha":"77819a58b66dd7dc26bb5798d2e14d3b7b2ea481","author":{"email":"80754af91bfb6d1073585b046fe0a474ce868509@clojure.com","name":"Hudson @ build.clojure.org"},"message":"[maven-release-plugin] prepare for next development iteration","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/77819a58b66dd7dc26bb5798d2e14d3b7b2ea481"},{"sha":"411c657ce73b31eed53d51513c3031a7da487d8e","author":{"email":"0a61acb1b71741ad3e278bf687ec45e201a8835f@gmail.com","name":"Nicola Mometto"},"message":"CLJ-1744: clear unused locals","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/411c657ce73b31eed53d51513c3031a7da487d8e"},{"sha":"a1e66725f93a488620f4a791d2b466ec17c8753b","author":{"email":"8cd4bcdb9c152d84116775adc2cfa314b99fcf25@alum.wustl.edu","name":"Andy Fingerhut"},"message":"CLJ-99: Make min-key and max-key evaluate k on each argument at most once\n\nPrevious versions of these functions evaluated k on most argument\ntwice if there were 3 or more.","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/a1e66725f93a488620f4a791d2b466ec17c8753b"},{"sha":"4eb94e64049e94892bc26420b77201eb815b1bbe","author":{"email":"0a61acb1b71741ad3e278bf687ec45e201a8835f@gmail.com","name":"Nicola Mometto"},"message":"CLJ-1814: cache protocol impl, satisfies? as fast as method invocation","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/4eb94e64049e94892bc26420b77201eb815b1bbe"},{"sha":"e85674c64e43973af0f9d663f9c7c2e0fe8faaa0","author":{"email":"1d39464b5c1214aa230fdcc122a35e94f9442f6c@climate.com","name":"Michael Blume"},"message":"use fmap, not bind\n\nwhen either can be used, fmap should be used because it's faster","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/e85674c64e43973af0f9d663f9c7c2e0fe8faaa0"},{"sha":"64f7b4d15f9a8105d8d40beeae2e3fbc20cf773b","author":{"email":"df5ddce5df1720b441240209f706977b43c1987a@cisco.com","name":"Andy Fingerhut"},"message":"CLJ-1103: Make conj assoc dissoc & transient versions handle args similarly\n\nassoc assoc! and dissoc! now return the given collection when no\nadditional arguments are given, whereas before they threw an\nexception.\n\nconj conj! dissoc already implemented this case before.\n\nFormerly only (conj! coll x) with one item to add was implemented.\nNow conj! takes any number of args that conj can.\n\nassoc! now checks for final key having no value like assoc does after\npatch for CLJ-1052 was committed.","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/64f7b4d15f9a8105d8d40beeae2e3fbc20cf773b"},{"sha":"f8850273db81ae53be81f7a7c65a930baecd7986","author":{"email":"99328387f8334f68433c424d2dfd83062f62754b@cognitect.com","name":"Alex Miller"},"message":"CLJ-1364 Add hash and equality methods for primitive vec seqs","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/f8850273db81ae53be81f7a7c65a930baecd7986"},{"sha":"720369a6f4a1153f122a36ccc919c8c22b0a6505","author":{"email":"7e01255c707f26dfe227eb36b3dfdddd2fd0aab0@gmail.com","name":"Michał Marczyk"},"message":"CLJ-1613: evaluate :or defaults in enclosing scope in map destructuring","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/720369a6f4a1153f122a36ccc919c8c22b0a6505"},{"sha":"09cde50649bb0639dfd01f489e90e8942c02223f","author":{"email":"13fbd79c3d390e5d6585a21e11ff5ec1970cff0c@postspectacular.com","name":"Karsten Schmidt"},"message":"CLJ-1806 add single arity to group-by returning reducer / reduction fn, add tests","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/09cde50649bb0639dfd01f489e90e8942c02223f"},{"sha":"9639bee8179ed99ab85fafb890772bb1cca7bef0","author":{"email":"b5617cb255e7a050aad195937f45822f32f6e2cd@gmail.com","name":"Ghadi Shayban"},"message":"CLJ-1793 - Clear 'this' before calls in tail position\n\nThe criteria for when a tail call is a safe point to clear 'this':\n\n1) Must be in return position\n2) Not in a try block (might need 'this' during catch/finally)\n3) When not direct linked\n\nReturn position (#1) isn't simply context == C.RETURN because\nloop bodies are always parsed in C.RETURN context\n\nA new dynvar METHOD_RETURN_CONTEXT tracks whether an InvokeExpr\nin tail position can directly leave the body of the compiled java\nmethod. It is set to RT.T in the outermost parsing of a method body\nand invalidated (set to null) when a loop body is being parsed\nwhere the context for the loop expression is not RETURN parsed.\n\nAlso, clear on StaticInvokeExpr now that they are a thing again","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/9639bee8179ed99ab85fafb890772bb1cca7bef0"},{"sha":"997dae50bcf4f19d423a68fd90075b6dc1cc5995","author":{"email":"0a61acb1b71741ad3e278bf687ec45e201a8835f@gmail.com","name":"Nicola Mometto"},"message":"CLJ-1807: add prefer-proto","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/997dae50bcf4f19d423a68fd90075b6dc1cc5995"},{"sha":"08ee11a40736ec1adb2d0d4728cdb8ed80a876ae","author":{"email":"1d39464b5c1214aa230fdcc122a35e94f9442f6c@climate.com","name":"Michael Blume"},"message":"put class in a local, don't call classOf twice","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/08ee11a40736ec1adb2d0d4728cdb8ed80a876ae"},{"sha":"38964b9a614af5333120e17d8a3e13900911ce15","author":{"email":"1d39464b5c1214aa230fdcc122a35e94f9442f6c@climate.com","name":"Michael Blume"},"message":"CLJ-1800 Avoid realizing lazy-seqs on with-meta\n\nEnsure pre-meta and post-meta seqs share underlying cache, will not\nrealize twice.","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/38964b9a614af5333120e17d8a3e13900911ce15"},{"sha":"7276c42b54ca159f0361673211fc42f9aafe2168","author":{"email":"cb1f1719d60c9a6dda78b1dc2b8261f56ff61d07@gnu.org","name":"Tassilo Horn"},"message":"Forbid vararg declaration in defprotocol/definterface.\n\nProtocol, interface method declarations don't allow for varags.\nCurrently, for example\n\n  (defprotocol FooBar\n    (foo [this & more]))\n\ncompiles just fine, and & is interpreted as a usual argument that\nhappens to be named & without special meaning.  But clearly, the user\nwanted to specify a varags parameter here.  The same applies to\ndefinterface.\n\nSimilarly, providing method implementations via defrecord, deftype, and\nreify don't allow for varags (but dynamic extenions via extend do).\n\nSo this patch makes defprotocol and definterface throw an\nIllegalArgumentException if a user tries to use varargs in method\nsignatures.\n\nSimilarly, defrecord, deftype, and reify throw an\nIllegalArgumentException if any method implementation arglist contains a\nvarargs argument.\n\nAlso added tests for all those cases plus a regression test checking\nthat arglists like [this [a b & more]] still work, cause that's a valid\nuse-case for documentation purposes.","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/7276c42b54ca159f0361673211fc42f9aafe2168"},{"sha":"ebd16a211fd94bf85b5649c67021a3ce23b713d8","author":{"email":"7f5e12a635474f664a0cb581c684d0f2e2d86819@gmail.com","name":"Adam Clements"},"message":"CLJ-1714 Using a class in a type hint shouldn't cause the static initialiser to be executed","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/ebd16a211fd94bf85b5649c67021a3ce23b713d8"},{"sha":"c0b6f3a06d2e90b58adb3912f0c88f38227a6738","author":{"email":"b5617cb255e7a050aad195937f45822f32f6e2cd@gmail.com","name":"Ghadi Shayban"},"message":"Clear 'this' before calls in tail position\n\nThe criteria for when a tail call is a safe point to clear 'this':\n\n1) Must be in return position\n2) Not in a try block (might need 'this' during catch/finally)\n3) When not direct linked\n\nReturn position (#1) isn't simply context == C.RETURN because\nloop bodies are always parsed in C.RETURN context\n\nA new dynvar METHOD_RETURN_CONTEXT tracks whether an InvokeExpr\nin tail position can directly leave the body of the compiled java\nmethod. It is set to RT.T in the outermost parsing of a method body\nand invalidated (set to null) when a loop body is being parsed\nwhere the context for the loop expression is not RETURN parsed.\n\nAlso, clear on StaticInvokeExpr now that they are a thing again","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/c0b6f3a06d2e90b58adb3912f0c88f38227a6738"},{"sha":"2dce4f92caec200f028f9f15a23a4cbfdc8d7650","author":{"email":"0a61acb1b71741ad3e278bf687ec45e201a8835f@gmail.com","name":"Nicola Mometto"},"message":"CLJ-1550: define package for class in DynamicClassLoader","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/2dce4f92caec200f028f9f15a23a4cbfdc8d7650"},{"sha":"f9ad26d20a8845c3c956271cde1d477aa92a14bf","author":{"email":"0a61acb1b71741ad3e278bf687ec45e201a8835f@gmail.com","name":"Nicola Mometto"},"message":"CLJ-1224: cache hasheq and hashCode for records","distinct":true,"url":"https://api.github.com/repos/MichaelBlume/clojure/commits/f9ad26d20a8845c3c956271cde1d477aa92a14bf"}]}