Newer
Older
dub_jkp / CHANGELOG.md
@Sebastian Wilzbach Sebastian Wilzbach on 16 Apr 2016 46 KB update links to dlang
  1. Changelog
  2. =========
  3.  
  4. v0.9.24 - 2015-09-
  5. --------------------
  6.  
  7. ### Features and improvements ###
  8.  
  9. - Added support for [SDLang][sdl-package-format] based package descriptions - [issue #348][issue348], [pull #582][issue582]
  10. - Source code updated to build with DMD 2.064.2 through 2.068.0
  11. - Enhanced `dub describe` support:
  12. - The D API is now strongly typed instead of using `Json`
  13. - Added a `"targets"` field that can be used to sport external build tools
  14. - Added a `--data=X` switch to get information in a shell script friendly format (by Nick Sabalausky) - [pull #572][issue572]
  15. - Added an `"active"` field to each package to be used to signal if a certain dependency takes part in the build - [issue #393][issue393]
  16. - Added a set of additional environment variables that are available to pre/post build/generate commands (by Nick Sabalausky) - [issue #593][issue593]
  17. - Errors and warnings are not suppressed anymore, but output to stderr
  18. - Added the possibility to get all import paths for `dub describe` (by w0rp) - [pull #552][issue552], [issue #560][issue560], [pull #561][issue561]
  19. - Added stricter package name validation checks
  20. - Added a `--bare` option to search for dependencies only in the current directory (useful for running tests)
  21. - Removed the deprecated "visuald-combined" generator (use `dub generate visuald --combined` instead)
  22. - The command line shown for verbose output now contain the same quotes as used for the actual command invocation
  23. - Uses `-vcolumns` for DMD if supported - [issue #581][issue581]
  24. - Properly suppressing compiler output when `--quiet` or `--vquiet` are given (by Nick Sabalausky) - [issue #585][issue585], [pull #587][issue587]
  25. - Added a warning when referencing sub packages by their path (instead of their parent's path)
  26. - Building `sourceLibrary` targets with `-o-` is allowed now (enables documentation generation in particular) - [issue #553][issue553]
  27. - The VisualD generator doesn't use a "_d" suffix for debug build targets anymore (by Guillaume Piolat aka p0nce) - [pull #617][issue617]
  28. - Added a new "profile-gc" build type
  29. - Cleaned up console output (parts by Guillaume Piolat aka p0nce) - [pull #621][issue621]
  30. - Added "arm" and "arm_thumb" cross-compilation invocation support for GDC
  31. - Added configuration support to set the default compiler binary "defaultCompiler" field in the settings.json file
  32. - Removed the build script based selection of the default compiler (by Marc Schütz) - [pull #678][issue678]
  33. - Added a `--skip-registry=` switch to skip searching for packages on remote registries - [issue #580][issue580]
  34.  
  35. ### Bug fixes ###
  36.  
  37. - Fixed quoting of command line arguments for the DMD backend in the linker phase - [issue #540][issue540]
  38. - Fixed running Dustmite with versioned dependencies that are available as a git working copy
  39. - Fixed dependency resolution for packages that have sub packages and all of them are path based - [issue #543][issue543]
  40. - Fixed the error message for path based dependencies that are missing a package description file - see [issue #535][issue535]
  41. - Fixed running Dustmite with dub not available in `PATH` - [pull #547][issue547]
  42. - Fixed passing compiler, architecture, build type and configuration options to Dustmite - [pull #547][issue547]
  43. - Fixed return code when `dub run` is used on a library (returns non-zero now) - [pull #546][issue546]
  44. - Fixed spurious warning when building a package by name and DUB is not run from a package directory
  45. - Fixed handling of dependency errors that occur during automatic upgrade checks - [issue #564][issue564], [pull #565][issue565]
  46. - Fixed the architecture flag for x64 passed to LDC (by p0nce) - [pull #574][issue574]
  47. - Fixed enforcement of build requirements in dependencies - [issue #592][issue592]
  48. - Fixed `dub remove` to only remove managed packages - [issue #596][issue596]
  49. - Added a workaround for a data corruption issue (codegen bug) - [issue #601][issue601]
  50. - Fixed building dynamic libraries with DMD - [issue #613][issue613]
  51.  
  52. [sdl-package-format]: http://code.dlang.org/package-format?lang=sdl
  53. [issue348]: https://github.com/dlang/dub/issues/348
  54. [issue393]: https://github.com/dlang/dub/issues/393
  55. [issue535]: https://github.com/dlang/dub/issues/535
  56. [issue540]: https://github.com/dlang/dub/issues/540
  57. [issue543]: https://github.com/dlang/dub/issues/543
  58. [issue546]: https://github.com/dlang/dub/issues/546
  59. [issue547]: https://github.com/dlang/dub/issues/547
  60. [issue552]: https://github.com/dlang/dub/issues/552
  61. [issue552]: https://github.com/dlang/dub/issues/552
  62. [issue553]: https://github.com/dlang/dub/issues/553
  63. [issue560]: https://github.com/dlang/dub/issues/560
  64. [issue561]: https://github.com/dlang/dub/issues/561
  65. [issue564]: https://github.com/dlang/dub/issues/564
  66. [issue565]: https://github.com/dlang/dub/issues/565
  67. [issue572]: https://github.com/dlang/dub/issues/572
  68. [issue574]: https://github.com/dlang/dub/issues/574
  69. [issue580]: https://github.com/dlang/dub/issues/580
  70. [issue581]: https://github.com/dlang/dub/issues/581
  71. [issue582]: https://github.com/dlang/dub/issues/582
  72. [issue585]: https://github.com/dlang/dub/issues/585
  73. [issue587]: https://github.com/dlang/dub/issues/587
  74. [issue592]: https://github.com/dlang/dub/issues/592
  75. [issue593]: https://github.com/dlang/dub/issues/593
  76. [issue596]: https://github.com/dlang/dub/issues/596
  77. [issue601]: https://github.com/dlang/dub/issues/601
  78. [issue613]: https://github.com/dlang/dub/issues/613
  79. [issue617]: https://github.com/dlang/dub/issues/617
  80. [issue621]: https://github.com/dlang/dub/issues/621
  81. [issue678]: https://github.com/dlang/dub/issues/678
  82.  
  83. v0.9.23 - 2015-04-06
  84. --------------------
  85.  
  86. ### Features and improvements ###
  87.  
  88. - Compiles with DMD frontend versions 2.064 up to 2.067
  89. - Largely reduced the execution time needed by DUB itself during builds - [pull #388][issue388]
  90. - Added a `dub clean-caches` command to clear online registry meta data that is cached locally - [pull #433][issue433]
  91. - Added a "deimos" template type to the `dub init` command - [pull #431][issue431]
  92. - Added support for dub init to take a list of dependencies (by Colin Grogan) - [pull #453][issue453]
  93. - Example: `dub init myProj logger vibe-d gfm --type=vibe.d`
  94. - DUB will try to get the latest version number for each of these dependencies from [code.dlang.org](http://code.dlang.org/) and automatically add them to the dependencies section of dub.json
  95. - The previous syntax where the argument to `dub init` is the project type instead of a dependency list is preserved, but deprecated - use the `--type=` switch instead
  96. - Added a project generator for Sublime Text (by Nicholas Londey) - [pull #461][issue461]
  97. - Added a project generator for CMake files (by Steven Dwy) - [pull #489][issue489]
  98. - Added support for `dub test` and modules where the path doesn't match the module name (by Szabo Bogdan) - [pull #344][issue344]
  99. - Added `dub --version` option to output the program version and build date - [pull #513][issue513]
  100. - Improved `"copyFiles"` support
  101. - Added support for glob matches (by Colden Cullen) - [pull #407][issue407]
  102. - Added support for copying directories (by Vadim Lopatin) - [pull #471][issue471]
  103. - Files are now hard linked into the target directory instead of making a real copy
  104. - Avoids to hard link `"copyFiles"` that have not changed in the source directory on Windows - [issue #511][issue511]
  105. - DUB now searches the PATH for installed compilers and chooses the default compiler as appropriate - [issue #480][issue480], [pull #506][issue506]
  106. - `--build-mode=singleFile` can now build several files in parallel using the `--parallel` switch - [issue #498][issue498]
  107. - Improved the JSON error diagnostic format to `file(line): Error: message` for better IDE integration - [issue #317][issue317]
  108.  
  109. ### Bug fixes ###
  110.  
  111. - Fixed determining module names from empty modules for `dub test` (by Szabo Bogdan) - [pull #458][issue458]
  112. - Fixed generating VisualStudio solution files on Win64 (by Nicholas Londey) - [pull #455][issue455]
  113. - Fixed erroneously adding "executable" dependencies to the list of link dependencies (by Михаил Страшун aka Dicebot) - [pull #474][issue474]
  114. - Fixed overriding the default source paths with `"sourcePaths"` - [issue #483][issue483]
  115. - Fixed removing packages when build output files exist - [issue #377][issue377]
  116. - Fixed handling of sub package references that specify an explicit path - [issue #448][issue448]
  117. - Fixed erroneous detection of a "sourcemain.d" source file under certain circumstances - [issue #487][issue487]
  118. - Fixed `dub build -t ddox` on OS X - [issue #354][issue354]
  119. - Fixed using unique temporary files (by Михаил Страшун aka Dicebot) - [issue #482][issue482], [pull #497][issue497]
  120. - Fixed compiler command line issues on Windows with `--buildMode=singleFile` (by machindertech) - [pull #505][issue505]
  121. - Fixed a version range match error (">=A <B" + "==B" was merged to "==B")
  122. - Fixed broken up-to-date detection of changed overriden string import files - [issue #331][issue331]
  123. - Fixed handling of the new `-m32mscoff` flag (is now also passed to the linker stage)
  124. - Fixed handling of several command line options for GDC (by Iain Buclaw) - [pull #387][issue387]
  125. - Fixed handling of `"buildTypes"` for downloaded packages (by sinkuu) - [pull #406][issue406]
  126.  
  127. [issue317]: https://github.com/rejectedsoftware/dub/issues/317
  128. [issue331]: https://github.com/rejectedsoftware/dub/issues/331
  129. [issue344]: https://github.com/rejectedsoftware/dub/issues/344
  130. [issue354]: https://github.com/rejectedsoftware/dub/issues/354
  131. [issue377]: https://github.com/rejectedsoftware/dub/issues/377
  132. [issue387]: https://github.com/rejectedsoftware/dub/issues/387
  133. [issue388]: https://github.com/rejectedsoftware/dub/issues/388
  134. [issue406]: https://github.com/rejectedsoftware/dub/issues/406
  135. [issue407]: https://github.com/rejectedsoftware/dub/issues/407
  136. [issue431]: https://github.com/rejectedsoftware/dub/issues/431
  137. [issue433]: https://github.com/rejectedsoftware/dub/issues/433
  138. [issue448]: https://github.com/rejectedsoftware/dub/issues/448
  139. [issue453]: https://github.com/rejectedsoftware/dub/issues/453
  140. [issue455]: https://github.com/rejectedsoftware/dub/issues/455
  141. [issue458]: https://github.com/rejectedsoftware/dub/issues/458
  142. [issue461]: https://github.com/rejectedsoftware/dub/issues/461
  143. [issue471]: https://github.com/rejectedsoftware/dub/issues/471
  144. [issue474]: https://github.com/rejectedsoftware/dub/issues/474
  145. [issue480]: https://github.com/rejectedsoftware/dub/issues/480
  146. [issue482]: https://github.com/rejectedsoftware/dub/issues/482
  147. [issue483]: https://github.com/rejectedsoftware/dub/issues/483
  148. [issue487]: https://github.com/rejectedsoftware/dub/issues/487
  149. [issue489]: https://github.com/rejectedsoftware/dub/issues/489
  150. [issue497]: https://github.com/rejectedsoftware/dub/issues/497
  151. [issue498]: https://github.com/rejectedsoftware/dub/issues/498
  152. [issue505]: https://github.com/rejectedsoftware/dub/issues/505
  153. [issue506]: https://github.com/rejectedsoftware/dub/issues/506
  154. [issue511]: https://github.com/rejectedsoftware/dub/issues/511
  155. [issue513]: https://github.com/rejectedsoftware/dub/issues/513
  156.  
  157.  
  158. v0.9.22 - 2014-09-22
  159. --------------------
  160.  
  161. ### Features and improvements ###
  162.  
  163. - Implemented an improved dependency handling (supported by Matthias Dondorff)
  164. - Deprecated `"~branch"` based dependencies - these have proven to facilitate unresolvable versioning conflicts
  165. - Added a "selections" file that contains the pinned versions of all dependencies for more control - `dub upgrade` can be used to update this file
  166. - Package selections can be overridden user or system wide using `dub add-override`
  167. - When determining the version of a GIT working copy, the latest tag is preferred over the branch
  168. - See the [full rationale](https://github.com/rejectedsoftware/dub/wiki/...)
  169. - Implemented the `dub dustmite` command for comfortable creation of reduced test cases of DUB packages
  170. - All packages are automatically copied to an isolated folder where [Dustmite](https://github.com/CyberShadow/DustMite/wiki) can do its job
  171. - DUB is run in a special mode that doesn't require expensive initialization, so that it doesn't slow down the reduction process
  172. - The test condition can be a specific exit code or an output regex match on either the compiler, linker, or program run
  173. - Added support for single file builds (by Mathias Lang aka Geod24) - [pull #364][issue364]
  174. - The special `"*"` version specification now matches any version or branch (should always be used for referencing sub packages of the same package)
  175. - Warn about using certain build options outside of build types (in addition to warning about certain `"dflags"`)
  176. - Removed explicit linking against Phobos on Linux when building using DUB (fixed building with DMD 2.065)
  177. - Fixed imports for DMD master (by John Colvin) - [pull #283][issue283]
  178. - Path based dependencies don't require a version number anymore (ignored)
  179. - Add support for vibe.d based HTTP downloads for better integration into vibe.d projects
  180. - `"mainSourceFile"` is now implicitly added to `"sourceFiles"`
  181. - `"preGenerateCommands"` are now run before collecting source files, enabling better support for generating source files - [issue #144][issue144]
  182. - Added a `-missing-only` switch to `dub upgrade` to get the same upgrade/fetch behavior as for `dub build` - see also [issue #271][issue271]
  183. - The default compiler is now the one that was used to build DUB itself (by Iain Buclaw) - [pull #303][issue303]
  184. - When running an executable, the working directory is now only changed if an explicit `"workingDirectory"` is specified
  185. - The compiler is now invoked to determine the actual build platform for the chosen compiler flags instead of simply guessing
  186. - Implemented for GDC by Kinsey Moore aka opticron - [pull #324][issue324]
  187. - Added a basic `dub clean` command - [issue #134][issue134]
  188. - Added a spell checker for the `-c`/`--config` flag (by Andrej Mitrovic) - [pull #313][issue313]
  189. - Added support for `$ROOT_PACKAGE_DIR` and `$<dependency>_PACKAGE_DIR` variables
  190. - Generalized the `--local`/`--system` flags to `--cache=<location>`, which is now available for all commands (by Colden Cullen) - [pull #306][issue306]
  191. - Added a `--build-mode` switch to choose between combined build and separate compile/link for DMD
  192. - When building a static library, its dependencies are not built anymore - [issue #316][issue316]
  193. - Displaying the line number where parsing a JSON document fails - see [issue #317][issue317]
  194. - Added a shorthand syntax for sub packages (":subpack" instead of "parent:subpack") - [issue #315][issue315]
  195. - Replace all "package.json" files/mentions with "dub.json" and clean up white space throughout the code base (by James Clarke aka jrtc27) - [pull #337][issue337], [pull #338][issue338], [pull #339][issue339]
  196. - `dub describe` not outputs all source/import files of all configurations and platforms - [issue #185][issue185]
  197. - Added basic support for the new human readable `"systemDependencies"` field
  198. - Added a `--temp-build` switch to force building in a temporary folder - [issue #294][issue294]
  199. - Using `executeShell` when invoking tools to enable more flexible use of shell features - [issue #356][issue356]
  200. - `dub init` now creates a default `.gitignore` file
  201. - An exit code of `-9` for a tool now triggers a short message with a possible cause (out of memory)
  202. - The information about possible package upgrades is now cached for one day, resulting in less online queries to the package registry
  203. - Implemented separate compile/link mode for GDC (by Mathias Lang aka Geod24) - [pull #367][issue367]
  204. - `.def` files are now passed to the linking stage when doing separate compile/link building
  205. - Added BASH shell completion script (by Per Nordlöw) - [issue #154][issue154]
  206. - Added FISH shell completion script (by Matt Soucy) - [pull #375][issue375]
  207.  
  208. ### Bug fixes ###
  209.  
  210. - Fixed automatic removing of packages, removing was only possible with --force-remove.
  211. - Fixed "local" package fetching (was doing the same as "system") - [issue #259][issue259]
  212. - Fixed handling of `"mainSourceFile"` when building with `--rdmd` - [issue #263][issue263]
  213. - Fixed useless separate compilation of dependencies when building with `--rdmd` - see [issue #255][issue255]
  214. - Fixed detection of known files during package removal, caused by a missing ending slash (by Matthias Dondorff)
  215. - Fixed `dub fetch <package> --version=<version>` to actually fetch the supplied version (by Matthias Dondorff)
  216. - Fixed linker issues for GCC based linking by putting `-l` flags after the list of source files - [issue #281][issue281]
  217. - Fixed spurious log output happening during `dub describe` - [issue #221][issue221]
  218. - Fixed interrupting the DDOX process for `dub -b ddox` (by Martin Nowak) - [pull #291][issue291]
  219. - Fixed building library targets with LDC (by Dmitri Makarov) - [pull #296][issue296]
  220. - Fixed the `"disallowInlining"` build option (by sinkuu) - [pull #297][issue297]
  221. - Fixed determining build flags using pkg-config when some libraries are unknown to pkg-config - [issue #274][issue274]
  222. - Fixed detection of dependency cycles - [issue #280][issue280]
  223. - Fixed detection of a required rebuild when the compiler (front end) version changes - [issue #284][issue284]
  224. - Fixed building of packages with a non-existent `"targetPath"` - [issue #261][issue261]
  225. - Fixed the warning that should appear when using manual `-debug=` flags instead of `"debugVersions"` - [issue #310][issue310]
  226. - Fixed processing of variables in `"preGenerateCommands"` and `"postGenerateCommands"`
  227. - Fixed handling of empty path nodes (e.g. "/home//someone/somefile") - [issue #177][issue177]
  228. - Fixed the up-to-date check for intermediate dependencies
  229. - Fixed detection of equal paths for `dub add-local` when only the ending slash character differs - [issue #268][issue268]
  230. - Fixed a bogus warning that the license of a sub package differs from the parent package when the sub package doesn't specify a license
  231. - Fixed building when files from "\\UNC" paths are involved - [issue #302][issue302]
  232. - Fixed up-to-date checking for embedded sub packages (by sinkuu) - [pull #336][issue336]
  233. - Fixed outputting multiple instances of the same platform flag which broke the build for some compilers - [issue #346][issue346]
  234. - Fixed referencing path based sub packages - [issue #347][issue347]
  235. - Fixed various error messages (by p0nce and sinkuu) - [pull #368][issue368], [pull #376][issue376]
  236. - Fixed the "ddox" build mode when DDOX hasn't already been installed - [issue #366][issue366]
  237. - Fixed probing the compiler for platfrom identifiers when performing cross compiling (by Mathias Lang aka Geod24) - [pull #380][issue380]
  238. - Fixed erroneously dropping the `"buildTypes"` field of downloaded packages (by sinkuu) - [pull #406][issue406]
  239. - Fixed trying to copy files with the same source and destination
  240. - Fixed downloading of packages with "+" in their version - [issue #411][issue411]
  241. - Fixed building dependencies with versions containing "+" on Windows/OPTLINK
  242. - Fixed a crash when sub packages of non-installed base packages are references - [issue #398][issue398]
  243. - Fixed repeated download of base packages when a non-existent sub package is referenced
  244. - Fixed intermediate build path for `--compiler=` binaries speficied with path separators - [issue #412][issue412]
  245.  
  246. [issue134]: https://github.com/rejectedsoftware/dub/issues/134
  247. [issue144]: https://github.com/rejectedsoftware/dub/issues/144
  248. [issue154]: https://github.com/rejectedsoftware/dub/issues/154
  249. [issue177]: https://github.com/rejectedsoftware/dub/issues/177
  250. [issue185]: https://github.com/rejectedsoftware/dub/issues/185
  251. [issue221]: https://github.com/rejectedsoftware/dub/issues/221
  252. [issue255]: https://github.com/rejectedsoftware/dub/issues/255
  253. [issue259]: https://github.com/rejectedsoftware/dub/issues/259
  254. [issue261]: https://github.com/rejectedsoftware/dub/issues/261
  255. [issue263]: https://github.com/rejectedsoftware/dub/issues/263
  256. [issue268]: https://github.com/rejectedsoftware/dub/issues/268
  257. [issue271]: https://github.com/rejectedsoftware/dub/issues/271
  258. [issue274]: https://github.com/rejectedsoftware/dub/issues/274
  259. [issue280]: https://github.com/rejectedsoftware/dub/issues/280
  260. [issue281]: https://github.com/rejectedsoftware/dub/issues/281
  261. [issue283]: https://github.com/rejectedsoftware/dub/issues/283
  262. [issue284]: https://github.com/rejectedsoftware/dub/issues/284
  263. [issue291]: https://github.com/rejectedsoftware/dub/issues/291
  264. [issue294]: https://github.com/rejectedsoftware/dub/issues/294
  265. [issue296]: https://github.com/rejectedsoftware/dub/issues/296
  266. [issue297]: https://github.com/rejectedsoftware/dub/issues/297
  267. [issue302]: https://github.com/rejectedsoftware/dub/issues/302
  268. [issue303]: https://github.com/rejectedsoftware/dub/issues/303
  269. [issue306]: https://github.com/rejectedsoftware/dub/issues/306
  270. [issue310]: https://github.com/rejectedsoftware/dub/issues/310
  271. [issue313]: https://github.com/rejectedsoftware/dub/issues/313
  272. [issue315]: https://github.com/rejectedsoftware/dub/issues/315
  273. [issue316]: https://github.com/rejectedsoftware/dub/issues/316
  274. [issue317]: https://github.com/rejectedsoftware/dub/issues/317
  275. [issue324]: https://github.com/rejectedsoftware/dub/issues/324
  276. [issue336]: https://github.com/rejectedsoftware/dub/issues/336
  277. [issue337]: https://github.com/rejectedsoftware/dub/issues/337
  278. [issue338]: https://github.com/rejectedsoftware/dub/issues/338
  279. [issue339]: https://github.com/rejectedsoftware/dub/issues/339
  280. [issue346]: https://github.com/rejectedsoftware/dub/issues/346
  281. [issue347]: https://github.com/rejectedsoftware/dub/issues/347
  282. [issue356]: https://github.com/rejectedsoftware/dub/issues/356
  283. [issue364]: https://github.com/rejectedsoftware/dub/issues/364
  284. [issue366]: https://github.com/rejectedsoftware/dub/issues/366
  285. [issue367]: https://github.com/rejectedsoftware/dub/issues/367
  286. [issue368]: https://github.com/rejectedsoftware/dub/issues/368
  287. [issue375]: https://github.com/rejectedsoftware/dub/issues/375
  288. [issue376]: https://github.com/rejectedsoftware/dub/issues/376
  289. [issue380]: https://github.com/rejectedsoftware/dub/issues/380
  290. [issue398]: https://github.com/rejectedsoftware/dub/issues/398
  291. [issue406]: https://github.com/rejectedsoftware/dub/issues/406
  292. [issue411]: https://github.com/rejectedsoftware/dub/issues/411
  293. [issue412]: https://github.com/rejectedsoftware/dub/issues/412
  294.  
  295.  
  296. v0.9.21 - 2014-02-22
  297. --------------------
  298.  
  299. ### Features and improvements ###
  300.  
  301. - Implemented building dependencies as separate libraries (use `--combined` to use - almost - the old behavior)
  302. - The preferred package description file name is now "dub.json" instead of "package.json" (which is still supported)
  303. - Revamped command line help now shows detailed help for each command
  304. - Added `dub test` to run the unit tests of a package using a custom main() function
  305. - Public sub packages can now (and are recommended to) reside in sub folders
  306. - Added ruby style `~>` version specifications: `"~>1.0.2"` is equivalent to `">=1.0.2 <1.1.0"` and `"~>1.3"` is equivalent to `">=1.3.0 <2.0.0"`
  307. - `--annotate` now works for all commands
  308. - Added a `--force-remove` switch to force package removal when untracked files are found in a package folder
  309. - Added a `"mainSourceFile"` field to better control how `--rdmd` and `dub test` work
  310. - The target binary (if any) is now automatically deleted after a linker error to avoid partially linked binaries
  311. - Added `--force` to `dub build` and `dub run` to force recompilation even if already up to date
  312. - Renamed the "debug_" and "release" build options to "debugMode" and "releaseMode" to avoid the D keyword clash
  313. - Renamed the "noBoundsChecks" build option to "noBoundsCheck" to be consistent with the corresponding build requirement
  314. - `dub init xxx vibe.d` now emits a `-version=VibeDefaultMain` as required by the latest versions
  315. - Reimplemented the VisualD project generator to use the new compile target logic
  316. - Instead of `dub generate visuald-combined` use `dub generate visuald --combined`
  317. - Properly handles the explicit library target types (those other than `"targetType": "library"`)
  318. - Added support for `dub add-local` without an explicit version argument (will be inferred using GIT) (by p0nce) - [pull #194][issue194]
  319. - Added a new "release-nobounds" build type
  320. - Improved the error message when "dub remove" fails because of a missing installation journal
  321. - Removed the Mono-D project generator - use Mono-D's built in DUB support instead
  322. - Added support for public sub packages in sub folders - this is the preferred way to use sub packages, see <http://code.dlang.org/package-format#sub-packages>
  323. - Only "main.d"/"app.d" or "packname/main.d"/"packname/app.d" are now automatically treated as `"mainSourceFile"` for executable targets and none for library targets
  324. - Excessive/unknown command line arguments now result in an error
  325. - The "checking dependencies" message on startup is now a diagnostic message
  326. - A `"dflags"` entry of the form `-defaultlib=*` for DMD is now passed to the linking stage for separate compilation
  327. - Added simple support for `--arch=x86` and `--arch=x86_64` and LDC
  328. - The order of source files as passed to the compiler is now sorted by name to avoid random triggering of order dependent compiler issues
  329.  
  330. ### Bug fixes ###
  331.  
  332. - Fixed a malformed log message for files with modification times in the future
  333. - Fixed handling of absolute working directories
  334. - Fixed a segmentation fault on OS X when doing `dub upgrade` - [issue #179][issue179]
  335. - Fixed extraction of prerelease SemVer versions from the "git describe" output
  336. - Fixed handling of paths with spaces in generated VisualD projects
  337. - Fixed DUB binaries compiled with GDC/LDC to work around a crash issue in `std.net.curl` - [issue #109][issue109], [issue #135][issue135]
  338. - Fixed iterating over directories containing invalid symbols links (e.g. when searching a directory for packages)
  339. - Fixed the path separators used for `$DUBPATH` (':' on Posix and ';' on Windows)
  340. - Fixed using custom registries in the global DUB configuration file - [issue #186][issue186]
  341. - Fixed assertions triggering when `$HOME` is a relative path (by Ognjen Ivkovic) - [pull #192][issue192]
  342. - Fixed the VisualD project generator to enforce build requirements
  343. - Fixed build requirements to also affect comipler options of the selected build
  344. - Fixed configuration resolution for complex dependency graphs (it could happen that configurations were picked that can't work on the selected platform)
  345. - Fixed `dub build -b ddox` to only copy resource files from DDOX if they are newer than existing files on Posix
  346. - Fixed storing sub packages when the modified package description is written after fetching a package
  347. - Fixed a bogus "conflicting references" error when referencing sub packages [issue #214][issue214]
  348. - Fixed a null pointer dereference for locally registered package directories that had been deleted
  349. - Fixed determining the version of the root package (previously, `~master` was always assumed)
  350. - Fixed parsing of `==~master` style dependencies (equivalent to just `~master`)
  351. - Fixed handling of packages with upper case letters in their name (which is not allowed)
  352. - Fixed running applications on Windows with relative paths (`.\` gets prepended now)
  353.  
  354.  
  355. [issue109]: https://github.com/rejectedsoftware/dub/issues/109
  356. [issue135]: https://github.com/rejectedsoftware/dub/issues/135
  357. [issue179]: https://github.com/rejectedsoftware/dub/issues/179
  358. [issue186]: https://github.com/rejectedsoftware/dub/issues/186
  359. [issue192]: https://github.com/rejectedsoftware/dub/issues/192
  360. [issue194]: https://github.com/rejectedsoftware/dub/issues/194
  361. [issue214]: https://github.com/rejectedsoftware/dub/issues/214
  362.  
  363.  
  364. v0.9.20 - 2013-11-29
  365. --------------------
  366.  
  367. ### Features and improvements ###
  368.  
  369. - Compiles on DMD 2.064 without warnings - [issue #116][issue116]
  370. - Builds are cached now by default in the ".dub/" sub folder of each package
  371. - An explicit "dub upgrade --prerelease" is now necessary to upgrade to pre-release versions of dependencies
  372. - "dub describe" and generated VisualD projects now also contain pure import and string import files
  373. - "dub run" now only builds in "/tmp" or "%TEMP%" if the package folder is write protected - [issue #82][issue82]
  374. - "dub init" can not take an optional project template name (currently "minimal" or "vibe.d")
  375. - Renamed "dub install" to "dub fetch" to avoid giving the impression of actual system installation (by Михаил Страшун aka Dicebot) - [pull #150][issue150]
  376. - Added support for "dub describe (package name)" and "dub describe --root=(path to package)" to describe packages outside of the CWD
  377. - `"excludedSourceFiles"` now supports [glob expressions](http://dlang.org/phobos/std_path.html#.globMatch) (by Jacob Carlborg) - [pull #155][issue155]
  378. - "dub --build=ddox" now starts a local HTTP server and automatically opens the browser to display the documentation
  379. - Environment variables can now be used inside path based fields in package.json (by Alexei Bykov) - [pull #158][issue158]
  380. - "dub describe" now contains a `"targetFileName"` field that includes the file extension (e.g. ".exe" or ".so")
  381. - Removed the compatibility version of the new `std.process` as it lacks support for `browse()`
  382. - Support using .obj/.lib/.res/.o/.a/.so/.dylib files to be specified as "sourceFiles", they will be bassed to the compiler at the linking stage
  383. - Added a "library-nonet" configuration to the package description file to compile without a CURL dependency
  384. - Added support for the "http_proxy" environment variable
  385.  
  386. ### Bug fixes ###
  387.  
  388. - Fixed building of explicitly selected packages with custom configurations (using "dub build (package name)")
  389. - Fixed running DUB from outside of a valid package directory when an explicit package name is given
  390. - Fixed dependency calculation for dependencies referenced in configuration blocks - [issue #137][issue137]
  391. - Fixed warnings to be enabled as errors by default again
  392. - Fixed resolution of dependencies when sub packages are involved - [issue #140][issue140]
  393. - Fixed handling of build options for GDC/LDC (by finalpatch) - [pull #143][issue143]
  394. - Fixed emitting "-shared -fPIC" for DMD when building shared libraries - [issue #138][issue138]
  395. - Fixed "dub --build=ddox" for target types other than "executable" - [issue #142][issue142]
  396. - Fixed a crash when loading the main package failed - [issue #145][issue145]
  397. - Fixed the error message for empty path strings in the `"sourcePaths"` field - see [issue #149][issue149]
  398. - Fixed representing empty relative paths by "." instead of an empty string - [issue #153][issue153]
  399. - Fixed running executables for projects outside of the CWD
  400. - Fixed copying of DDOX resources on Posix for "--build=ddox" (by Martin Nowak) - [pull #162][issue162]
  401. - Fixed ARM floating-point platform/version identifiers
  402. - Fixed generating VisualD projects for shared library packages (by p0nce) - [pull #173][issue173]
  403. - Fixed erroneous upgrading of packages that are not managed by DUB (for "dub upgrade") - [issue #171][issue171]
  404. - Fixed erroneously fetching the same package multiple times when sub packages are used
  405. - Fixed string representation of empty paths (fixes the target file name for generated VisualD projects)
  406.  
  407. [issue82]: https://github.com/rejectedsoftware/dub/issues/82
  408. [issue116]: https://github.com/rejectedsoftware/dub/issues/116
  409. [issue137]: https://github.com/rejectedsoftware/dub/issues/137
  410. [issue140]: https://github.com/rejectedsoftware/dub/issues/140
  411. [issue142]: https://github.com/rejectedsoftware/dub/issues/142
  412. [issue143]: https://github.com/rejectedsoftware/dub/issues/143
  413. [issue145]: https://github.com/rejectedsoftware/dub/issues/145
  414. [issue149]: https://github.com/rejectedsoftware/dub/issues/149
  415. [issue150]: https://github.com/rejectedsoftware/dub/issues/150
  416. [issue153]: https://github.com/rejectedsoftware/dub/issues/153
  417. [issue155]: https://github.com/rejectedsoftware/dub/issues/155
  418. [issue158]: https://github.com/rejectedsoftware/dub/issues/158
  419. [issue162]: https://github.com/rejectedsoftware/dub/issues/162
  420. [issue171]: https://github.com/rejectedsoftware/dub/issues/171
  421. [issue173]: https://github.com/rejectedsoftware/dub/issues/173
  422.  
  423.  
  424. v0.9.19 - 2013-10-18
  425. --------------------
  426.  
  427. ### Features and improvements ###
  428.  
  429. - Added the possibility to build or run a specific package, inculding sub packages
  430. - Implemented a new "--root=PATH" switch to let dub operate from a different directory than the current working directory
  431. - "dub init" now always emits lower case DUB package names
  432. - Improved diagnostic output for "dub add-local" and "dub remove-local"
  433. - Using the static version of Phobos fro building DUB to improve platform independence on Linux
  434.  
  435. ### Bug fixes ###
  436.  
  437. - Fixed erroneos "-debug" switches in non-debug builds
  438. - Enabled again a warning when using "-debug=" flags in "dflags" instead of using "debugVersions"
  439. - Fixed handling of paths with spaces for "--build=ddox"
  440. - Fixed inclusion of multiple instances of the same package.json files in the "visuald-combined" generator (by p0nce) - [pull #124][issue124]
  441. - Fixed response file output for LDC - [issue #86][issue86]
  442. - Fixed response file output for GDC - [issue #125][issue125]
  443. - Partially fixed working in paths with unicode characters by avoiding `std.stdio.File` - [issue #130][issue130]
  444.  
  445. [issue86]: https://github.com/rejectedsoftware/dub/issues/86
  446. [issue124]: https://github.com/rejectedsoftware/dub/issues/124
  447. [issue125]: https://github.com/rejectedsoftware/dub/issues/125
  448. [issue130]: https://github.com/rejectedsoftware/dub/issues/130
  449.  
  450.  
  451. v0.9.18 - 2013-09-11
  452. --------------------
  453.  
  454. ### Features and improvements ###
  455.  
  456. - Added support for a "buildOptions" field to be able to specify compiler options in an abstract way
  457. - Implemented a new configuration resolution algorithm that is able to handle complex dependency graphs
  458. - Added support for a "debugVersions" field ("-debug=xyz")
  459. - Added support for a "-debug=xyz" command line option to specify additional debug version specifiers
  460. - The VisualD project generator doesn't specify redundant compiler flags for features that have dedicated checkboxes anymore
  461. - Improved folder structure in generated "visuald-combined" projects (by p0nce) - [pull #110][issue110]
  462.  
  463. ### Bug fixes ###
  464.  
  465. - Fixed handling of packages with no configurations (a global `null` configuration is now assumed in this case)
  466. - Fixed building of shared libraries (was missing the "-shared" flag)
  467. - Fixed upgrading in conjunction with sub packages (was causing an infinite loop) - [issue #100][issue100]
  468. - Fixed build of complex generated VisualD projects by avoiding redundant link dependencies
  469. - Fixed upgrading of branch based dependencies
  470. - Fixed inheriting of global build settings in configurations - [issue #113][issue113]
  471. - Fixed inclusion of entry point files (e.g. "source/app.d") in pure library packages - [issue #105][issue105]
  472.  
  473. [issue100]: https://github.com/rejectedsoftware/dub/issues/100
  474. [issue105]: https://github.com/rejectedsoftware/dub/issues/105
  475. [issue110]: https://github.com/rejectedsoftware/dub/issues/110
  476. [issue113]: https://github.com/rejectedsoftware/dub/issues/113
  477.  
  478.  
  479. v0.9.17 - 2013-07-24
  480. --------------------
  481.  
  482. ### Features and improvements ###
  483.  
  484. - Added support for custom build types using the "buildTypes" field - [issue #78][issue78]
  485. - Added support for multiple and custom package registry URLs on the command line and as a configuration field - [issue #22][issue22]
  486. - Added support for a "workingDirectory" field to control from which directory the generated executable is run - [issue #84][issue84]
  487. - Added a new generator "visuald-combined", which combines the whole dependency tree into a single project
  488. - Updated default package registry URL to http://code.dlang.org
  489. - The default "unittest" and "unittest-cov" build types now issue the "-debug" flag
  490. - Building packages without any "importPaths" entry now issue a warning message
  491.  
  492. ### Bug fixes ###
  493.  
  494. - PARTIAL Fixed building with LDC - [issue #86][issue86]
  495. - The version string in the HTTP "User-Agent" field is now formatted according to SemVer
  496. - Fixed bogus warnings about "dflags" that are confised with flags that are a prefix of those
  497. - Fixed the VisualD generator to use the build settings and dependencies of the selected build configuration
  498. - Fixed the VisualD generator to enable the proper command line flags for each build type
  499. - Generated VisualD projects don't clean up JSON files on clean/rebuild anymore
  500. - Fixed building of packages with sub-packages when the main package is registered to DUB - [issue #87][issue87]
  501. - Fixed adhering to the specified global target type for library packages that have no explicit build configurations - [issue #92][issue92]
  502. - Fixed building of static libraries which have external library dependencies ("libs") - [issue #91][issue91]
  503. - Fixed error message for references to unknown sub-packages
  504. - Fixed handling of packages that are referenced multiple times using an explicit path - [issue #98][issue98]
  505.  
  506. [issue22]: https://github.com/rejectedsoftware/dub/issues/22
  507. [issue78]: https://github.com/rejectedsoftware/dub/issues/78
  508. [issue84]: https://github.com/rejectedsoftware/dub/issues/84
  509. [issue86]: https://github.com/rejectedsoftware/dub/issues/86
  510. [issue87]: https://github.com/rejectedsoftware/dub/issues/87
  511. [issue91]: https://github.com/rejectedsoftware/dub/issues/91
  512. [issue92]: https://github.com/rejectedsoftware/dub/issues/92
  513. [issue98]: https://github.com/rejectedsoftware/dub/issues/98
  514.  
  515.  
  516. v0.9.16 - 2013-06-29
  517. --------------------
  518.  
  519. ### Bug fixes ###
  520.  
  521. - Fixed fetching of all recursive dependencies in one go
  522. - Fixed handling of paths with spaces when using "dub build"
  523. - Fixed upwards inheritance of version identifiers in generated VisualD projects
  524.  
  525.  
  526. v0.9.15 - 2013-06-19
  527. --------------------
  528.  
  529. ### Features and improvements ###
  530.  
  531. - Added `"targetType": "none"` for packages which don't contain sources and don't generate a binary output
  532. - Added build settings to the "dub describe" output
  533.  
  534. ### Bug fixes ###
  535.  
  536. - Fixed fetching of "main:sub" style dependencies from the registry
  537. - Remove half-broken support for sub-packages defined in sub-directories (needs to be determined if this feature is worth the trade-offs)
  538. - Fixed bogus re-installations of packages referenced by a sub-package
  539. - Fixed handling of dependencies of header-only (or target type "none") dependencies in the VisualD generator
  540. - Fixed the reported version of sub-packages in the output of "dub describe"
  541.  
  542.  
  543. v0.9.14 - 2013-06-18
  544. --------------------
  545.  
  546. ### Features and improvements ###
  547.  
  548. - Implemented support for multiple packages per directory and accessing sub-packages as dependencies - [issue #67][issue67]
  549. - Dependencies can now be specified per-configuration in addition to globally
  550. - Version numbers are now handled according to [SemVer](http://semver.org/) ("~master" style branch specifiers are independent of this and work as before)
  551. - Library packages are now only built when running "dub" instead of trying to execute them - partially [pull #66][issue66] by Vadim Lopatin and [issue #53][issue53]
  552. - Add support for optional dependencies (picked up only if already installed) - [issue #5][issue5]
  553. - Compiles on DMD 2.063
  554. - The build script now directly calls the compiler instead of relying an rdmd and supports ldmd and gdmd in addition to dmd (automatically detected)
  555. - Outputs a warning for package names with upper-case letters and treats package names case insensitive
  556. - Added `"buildRequirements": ["noDefaultFlags"]` for testing manual sets of command line flags - [issue #68][issue68]
  557. - Errors and diagnostic messages are now written to `stderr` instead of `stdout`
  558. - Added "dub describe" to output a build description of the whole dependency tree for external tools given a configuration/compiler/platform combination
  559. - Removed the -property switch and deprecated `"buildRequirements": ["relaxProperties"]`
  560. - Added support for a `DUBPATH` environment variable and support for adding a directory with multiple packages using "dub add-local" to search for dependencies in local directories other than the predefined ones
  561. - Replaced --list-locals/--list-user/--list-system with a single --list-installed switch
  562. - The version of DUB is now inferred using "git describe" and output on the help screen and in the user agent string of HTTP requests
  563. - Added some minimal example projects for several use cases
  564. - Temporarily disabled automatic package upgrading (was only working for the now removed project locally installed packages)
  565.  
  566. ### Bug fixes ###
  567.  
  568. - Fixed recursive inferring of configurations
  569. - Fixed including debug information for separate compile/link builds
  570. - Fixed VisualD generator for x64 builds and avoid building header-only dependencies
  571. - Fixed handling of "-Wl" flags returned by pkg-config
  572. - Fixed LDC builds for projects with multiple modules of the same name (but in different packages) using the -oq switch
  573. - Fixed the linker workaround in the build script to work on non-Ubuntu systems - [issue #71][issue71]
  574. - Fixed handling of Windows UNC paths (by Lutger Blijdestijn) - [pull #75][issue75]
  575. - Fixed a possible infinite update loop - [issue #72][issue72]
  576. - Fixed handling of multiple compiler/linker arguments with the same content (e.g. "--framework A --framework B" on OS X)
  577.  
  578. [issue5]: https://github.com/rejectedsoftware/dub/issues/5
  579. [issue53]: https://github.com/rejectedsoftware/dub/issues/53
  580. [issue66]: https://github.com/rejectedsoftware/dub/issues/66
  581. [issue67]: https://github.com/rejectedsoftware/dub/issues/67
  582. [issue68]: https://github.com/rejectedsoftware/dub/issues/68
  583. [issue71]: https://github.com/rejectedsoftware/dub/issues/71
  584. [issue72]: https://github.com/rejectedsoftware/dub/issues/72
  585. [issue75]: https://github.com/rejectedsoftware/dub/issues/75
  586.  
  587.  
  588. v0.9.13 - 2013-04-16
  589. --------------------
  590.  
  591. ### Features and improvements ###
  592.  
  593. - Implemented `"buildRequirements"` to allow packages to specify certain build requirements (e.g. avoiding function inlining or warnings)
  594. - Experimental support to specify flags to pass to "ddox filter" for --build=ddox
  595. - Configurations inherit the global `"targetType"` by default now
  596. - Import paths in VisualD projects are now relative
  597. - Cleaner console output for -v (no thread/fiber ID is printed anymore)
  598. - Build settings for VisualD projects are tuned to avoid common linker/compiler bugs by default
  599. - Generated VisualD projects put intermediate files to ".dub/obj/&lt;projectname&gt;" now
  600.  
  601. ### Bug fixes ###
  602.  
  603. - Fixed upgrading of branch based dependencies - [issue #55][issue55]
  604. - Fixed wording and repetition of the reserved compiler flag warning message - [issue #54][issue54]
  605. - Fixed erroneous inclusion of .d files in the import libraries field of generated VisualD projects
  606. - Fixed passing "package.json" to the compiler in generated Mono-D projects - [issue #60][issue60]
  607. - Fixed the Mono-D and VisualD generators to properly copy `"copyFiles"` - [issue #58][issue58]
  608. - Fixed removing of temporary files in case of unexpected folder contents - [issue #41][issue41]
  609. - Fixed invocation of the linker on Windows in case of another "link.exe" being in PATH - [issue #57][issue57]
  610. - Fixed computation of build settings for VisualD projects (inheritance works only bottom to top now)
  611.  
  612. [issue41]: https://github.com/rejectedsoftware/dub/issues/41
  613. [issue54]: https://github.com/rejectedsoftware/dub/issues/54
  614. [issue55]: https://github.com/rejectedsoftware/dub/issues/55
  615. [issue57]: https://github.com/rejectedsoftware/dub/issues/57
  616. [issue58]: https://github.com/rejectedsoftware/dub/issues/58
  617. [issue60]: https://github.com/rejectedsoftware/dub/issues/60
  618.  
  619.  
  620. v0.9.12 - 2013-03-21
  621. --------------------
  622.  
  623. ### Features and improvements ###
  624.  
  625. - Implemented separate compile/link building when using DMD
  626. - Optimized platform field matching (by Robert Klotzner) - [pull #47][issue47]
  627. - Added build types for coverage analysis - [issue #45][issue45]
  628. - Wrong use of `"dflags"` now triggers a warning with suggestion for an alternative approach - [issue #37][issue37]
  629. - The "dub" binary is now in "bin/" instead of the root directory
  630.  
  631. ### Bug fixes ###
  632.  
  633. - Fixed an assertion that triggered when appending an absolute path
  634. - Fixed `--build=ddox` when DDOX was not yet installed/built - [issue #42][issue42]
  635. - Fixed the build script to work on Ubuntu
  636. - Fixed building in a project directory that contains no "package.json" file
  637. - Fixed the error message for non-existent dependency versions - [issue #44][issue44]
  638. - Fixed matching of (only) D source files (by Robert Klotzner) - [pull #46][issue46]
  639. - Fixed `"targetName"` and `"targetPath"` fields - [issue #48][issue48]
  640.  
  641. [issue37]: https://github.com/rejectedsoftware/dub/issues/37
  642. [issue42]: https://github.com/rejectedsoftware/dub/issues/42
  643. [issue44]: https://github.com/rejectedsoftware/dub/issues/44
  644. [issue45]: https://github.com/rejectedsoftware/dub/issues/45
  645. [issue46]: https://github.com/rejectedsoftware/dub/issues/46
  646. [issue47]: https://github.com/rejectedsoftware/dub/issues/47
  647. [issue48]: https://github.com/rejectedsoftware/dub/issues/48
  648.  
  649.  
  650. v0.9.11 - 2013-03-05
  651. --------------------
  652.  
  653. ### Features and improvements ###
  654.  
  655. - Configurations are now "shallow", meaning that configurations of dependencies can be selected by a package, but stay invisible to users of the package itself - [issue #33]
  656. - Target type selection is now supported (executable, static lib, dynamic lib etc.) - [issue #26][issue26]
  657. - Target name and path can be configured now
  658. - Added a possibility to exclude certain files from the build
  659. - The package description files is now added to IDE projects - [issue #35][issue35]
  660. - Using a response file to handle large compiler command lines - [issue #19][issue19]
  661.  
  662. ### Bug fixes ###
  663.  
  664. - Fixed spurious loading of the package during `dub install` - [issue #25][issue25]
  665.  
  666. [issue19]: https://github.com/rejectedsoftware/dub/issues/19
  667. [issue25]: https://github.com/rejectedsoftware/dub/issues/25
  668. [issue26]: https://github.com/rejectedsoftware/dub/issues/26
  669. [issue35]: https://github.com/rejectedsoftware/dub/issues/35
  670.  
  671.  
  672. v0.9.10 - 2013-03-04
  673. --------------------
  674.  
  675. ### Features and improvements ###
  676.  
  677. - Added direct support for generating HTML documentation using DDOC or DDOX
  678. - Added support for pre/post generate/build commands
  679. - `dub install` does not add a dependency anymore (reverted to old behavior)
  680.  
  681. ### Bug fixes ###
  682.  
  683. - `dub uninstall` actually works now
  684. - The Windows installer also installs the needed DLLs
  685. - Fixed Windows paths on non-Windows systems emitted by the Mono-D generator - [issue #32][issue32]
  686.  
  687. [issue32]: https://github.com/rejectedsoftware/dub/issues/32
  688.  
  689.  
  690. v0.9.9 - 2013-02-28
  691. -------------------
  692.  
  693. ### Features and improvements ###
  694.  
  695. - Adds a Windows installer (by Brad Anderson aka eco) - [pull #27][issue27]
  696. - Support for branches other than "~master"
  697. - The MonoD generator now generates a pretty source hierarchy for dependencies
  698. - The "sourcePath" field has been changed to "sourcePaths" to support multiple paths (by Nathan M. Swan aka carlor) - [pull #28][issue28]
  699.  
  700. ### Bug fixes ###
  701.  
  702. - "dub init" with no arguments uses the current directory name as the project name - [issue #16][issue16]
  703. - The tilde character is not used for path names anymore - [issue #23][issue23]
  704.  
  705. [issue16]: https://github.com/rejectedsoftware/dub/issues/16
  706. [issue23]: https://github.com/rejectedsoftware/dub/issues/23
  707. [issue27]: https://github.com/rejectedsoftware/dub/issues/27
  708. [issue28]: https://github.com/rejectedsoftware/dub/issues/28