Fetching contributors…
Cannot retrieve contributors at this time
174 lines (129 sloc) 7.52 KB


Our combined changelog and roadmap. It contains todos as well as dones.

Only project-wide changes are mentioned here. For individual function changelogs, please refer to their respective Git histories.

Locutus does not follow SemVer as we're a work in progress - and even though we try, we cannot guarantee BC-safety for the hundreds of contributions across the many languages that Locutus is assimilating.

Instead, we recommend using version pinning, and inspect changes for the few particular functions you rely on when you upgrade.


Ideas that will be planned and find their way into a release at one point

  • Address the 25 remaining test failures that are currently skipped (find out which ones via npm run test:languages:noskip)
  • Compare example test cases for PHP against php -r to make sure they are correctly mimicking the most recent stable behavior
  • Have one way of checking pure JS arrays vs PHP arrays (vs: === '[object Array]', typeof retObj[p] === 'object', var asString = var asFunc = _getFuncName(mixedVar.constructor) if (asString === '[object Object]' && asFunc === 'Object') { )
  • Investigate if we can have one helper function for intersecting, and use that in all array_*diff* and array_*sort* functions. Refrain from using labels, which those functions currently still rely on
  • Investigate if we can have one helper function for sorting, and use that in all *sort* functions
  • Investigate if we can have one helper function to resolve Function/'function'/'Class::function'/[$object, 'function'], and use that in is_callable, array_walk, call_user_func_array etc.
  • Parse requires with AST just like Browserify does. Then we can add dependencies back to website
  • Port a few more tricky/inter-depending Go functions
  • Port a few more tricky/inter-depending Python functions
  • Port a few more tricky/inter-depending Ruby functions
  • website: Render authors server-side
  • website: Fix the search functionality


Released: TBA. Diff.

  • [ ]


Released: 2017-06-22. Diff.

  • Community-contributed function improvements, see respective functions' changelogs in the Diff.


Released: 2017-02-23. Diff.

  • Upgrade eslint and fix newly found issues accordingly
  • Community-contributed function improvements, see respective functions' changelogs in the Diff.


Released: 2017-02-09. Diff.

  • Community-contributed function improvements, see respective functions' changelogs in the Diff.


Released: 2016-06-16. Diff.

  • Language fixes


Released: 2016-06-16. Diff.

  • Cache node modules on Travis so we'll be less dependent on npm connectivity


Released: 2016-05-25. Diff.

  • Upgrade depurar to 0.2.2, fixing an issue with the testwriter (@kukawski)
  • Add the 'reimplemented by' and 'parts by' contributionKeys to the /authors website page
  • Fix linting warnings when hacking on website by adding eslint dependencies locally
  • Improve array_rand: Fix coding style, hangs when selected huge number of keys from huge array, function signature (@kukawski)


Released: 2016-05-22. Diff.

  • Minor util.js refactoring
  • Use hexo deploy instead of custom bash script to aid Windows compatibility
  • Use cross-env and rimraf in build scripts to aid Windows compatibility
  • Improve Travis auto-deployments (now using official deploy methods)
  • Switch from to
  • Triage all open issues and PRs
  • Triage all open issues and PRs
  • docs: Miscellaneous cosmetic updates
  • website: Miscellaneous cosmetic updates
  • website: Show languages & functions in profile sidebar
  • website: Add social buttons
  • website: Let Travis auto-deploy to gh-pages on master changes
  • website: Use Hexo deploy vs bash script


Released: 2016-05-02. Diff.

  • Don't use files in package.json as we don't ship all of dist now


Released: 2016-05-02. Diff.

  • Don't use bin in package.json as we don't ship cli.js


Released: 2016-05-02. Diff.

  • website: Add profile to sidebar
  • Rename _locutus_shared to _helpers. Rename _locutus_shared_bc to _bc
  • website: Fix jumpy scrolling due to on the githubs
  • website: DRY up add_more code
  • website: About as homepage
  • Transpile to ES5 before publishing to npm
  • Add estarget option to all functions, set ip2long to es2015
  • Change fix(me)? and Todo to @todo
  • Replace single line /**/ comments with //
  • Enforce a 100 character line-length via eslint, and change all functions accordingly
  • Do not pass values by reference via the window global, use e.g. countObj.value and errorObj.value instead
  • Have one way of getting an ini value and its default
  • Track all cases of setTimeout, use them without window prefix. Remove codez replace hack
  • Track all cases of XMLHttpRequest
  • Test is_array in-browser to see if the require for ini_get works correctly with Browserify
  • Deprecate blocking ajax requests in e.g. file_get_contents
  • Use native sha1 and md5 encoding when available
  • Remove XUL from functions
  • Rename strictForIn to sortByReference
  • Index all notes
  • Either deprecate or document all functions using eval or new Function
  • Port Util to ES6 class
  • Write one function (ip2long) in ES6 and make it pass tests & linting
  • Deprecate support for node_js: 0.8
  • Make Travis fail on eslint issues
  • Move CHANGELOG to own file
  • Make all functions pass eslint with JavaScript Standard Style
  • Remove _workbench and _experimental. They are available for reference in 1.3.2 but making them harder to find for newcomers should help avoid a lot of complaints
  • Move functions that overly rely on ini & locales & global & ajax file operations to _legacy
  • Address ~50 test failures that were previously skipped and now enabled
  • json_* functions can leverage Node's
  • Add ES6 capabilities
  • Adopt better global detection, use $locutus.golang.<specifics>
  • Add more 'social' buttons to website (twitter, github)
  • Rework injectweb after structural changes in util.js
  • Use require for dependencies
  • Remove ; from examples in accordance with JavaScript Standard Style
  • Use mocha for generating language tests
  • Use require for dependencies
  • In util.opener: First * should point to the requesting/current language
  • Split out the npm module so you could do var sprintf = require('locutus/sprintf')
  • Launch BC breaking blogpost
  • Roll out support for Ruby, C, Go, Python


Released: April 4, 2016