-
UI Improvements
-
Swift 4 Changes
- Tifig now indexes the Swift 4 standard library
- Added support for generic subscripts (SE-0148)
- Added support for multi-Line string literals (SE-0168)
- Added support for string newline escaping (SE-0182)
- Added support for Swift 4's new KeyPaths (SE-0161)
- Added support for associated types with where clauses (SE-0142)
- Updated access control rules (SE-0169)
- Added support for the redesigned Package Manager Manifest API (SE-0158)
-
Indexer Improvements
- Added support for metatypes
- Added support for
type(of:)
expressions - Added support for pointers
- Improved support for extensions with
where
-clauses - When a generic function is called or a generic type is instantiated, the type checker will now check if the requirements of the generic parameters are fulfilled.
- For the generic parameters of generic functions, the type checker can now infer additional requirements that may be derived from the function signature.
- Various bug fixes
-
Eclipse OxygenThe new version of Tifig is based on Eclipse Oxygen which was released a few weeks ago. Here's what's New and Noteworthy in the new release of Eclipse.
-
UI Improvements
- When you Command-Click / Control-Click on an initializer call, Tifig will now jump to the corresponding initializer instead of the instantiated type.
- The outline view has been much improved. It now shows a more accurate description of the individual declarations and automatically highlights the declaration that is currently selected in the source editor.
- A new Quick Outline feature has been added as well. Just press Command-O on macOS or Control-O on Ubuntu to open a small pop-up that contains the outline of the current file. You can then start typing in order to filter the outline and press Enter to jump to the selected declaration. This allows you to quickly navigate through a large file:
-
Indexer Improvements
- The indexer now talks to the Swift Package Manager to obtain the dependency graph and uses that information to index the dependencies in topological order.
- The indexer can now distinguish between lvalues and rvalues (see Swift lexicon). This means
that Tifig can emit a warning if you try to assign to an rvalue or pass an rvalue to an
inout
parameter. - The snapshot of the standard library that ships with Tifig has been updated to the newest version on the swift-3.1-branch.
- Expressions in interpolated string literals are now parsed and indexed like regular expressions
- Added support for partial imports
- Various bug fixes
-
Indexer Improvements
- The indexer now includes a constraint-based type checker that is similar to the one of the official Swift compiler. This was necessary in order to be able to type check expressions whose type depends on the context.
- The indexer now also indexes the standard library. This is very important, because a lot of the core types
(e.g.,
Int
,String
) and operators (e.g., arithmetic and logical operators) are defined in the standard library. - Improved overload resolution
- Added support for literals
- Added support for implicit and explicit member lookup
- Added support for optionals (e.g., optional binding conditions, optional chaining, force unwrapping, etc.)
- Added support for patterns (e.g., switch cases, case conditions, etc.)
- Added support for closures
- Added support for tuple expressions
- Added support for subscript expressions
- Added support for unary, binary and ternary expressions
-
Parser Improvements
- Added support for metatype types (e.g.,
Int.Type
) - Fixed several ambiguities when parsing expression patterns and enum case patterns
- Various bug fixes
- Added support for metatype types (e.g.,
-
Open TypeTifig now supports the "Open Type" feature that is well-known from other Eclipse-based IDEs. Just press Command-Shift-T on macOS or Control-Shift-T on Ubuntu and a small new dialog will open up. This dialog lists all types from your project and from the standard library. You can enter the name of a type to filter the list and click OK to jump to a specific type in the editor.
-
Other Changes
- Added high-resolution icons for Retina displays
- Added a new wizard to create empty Swift
- If you hover the mouse over any identifier in your program, Tifig will now display the type of that identifier:
-
Parser Improvements
- Added support for the access modifier
fileprivate
in conformance with SE-0025 - Now allows most keywords in member references in conformance with SE-0071
- Moved
where
clause to end of declarations in conformance with SE-0081 - Implemented new protocol composition syntax in conformance with SE-0095
- Added support for the restructured condition clauses in conformance with SE-0099
- Added support for the access modifier
open
in conformance with SE-0117 - Added support for
#keyPath
expressions - Added support for Conditional Compilation Blocks (
#if ... #endif
) - Improved parsing of patterns
- Improved parsing of operators
- Removed the
dynamicType
keyword in favor of the newtype(of:)
syntax - Lots of bug fixes
- Added support for the access modifier
-
Indexer ImprovementsThe indexer can now handle extension declarations and module imports and should be updated automatically when new files are added or existing files are removed. However, the indexer is still a work in progress and there is a lot of work to be done in this area.
-
LauncherThe indexer now automatically recognizes the modules of your project. To run a project, it must contain at least one executable module (module that contains a
main.swift
file). If there are multiple executable modules, Tifig will present a dialog that lets you select the module you would like to run. Additionally, when you edit a Run Configuration, you can change the module to be executed. -
Other ChangesThe macOS version of Tifig is now signed, which means that there should be no Gatekeeper warnings anymore when you launch Tifig.
-
Several Parser Improvements
- Added support for implicit parameter names (
$0
,$1
, etc.) - Added support for unicode escapes in string literals
- Improved parsing of patterns
- Added support for declaration attributes (e.g.,
@IBOutlet
,@objc
, etc) - Now allows most keywords as argument labels in conformance with SE-0001
- Added support for
#selector
expressions in conformance with SE-0022 - Added support for debugging identifiers (e.g.,
#line
, etc.) in conformance with SE-0028 - Adjusted
inout
declarations in conformance with SE-0031 - Added support for generic type aliases in conformance with SE-0048
- Added support for implicit parameter names (
-
Eclipse NeonThe new version of Tifig is based on Eclipse Neon which was just released a few days ago. Here's what's New and Noteworthy in the new release of Eclipse.
-
Program ArgumentsYou can now specify arguments that are passed to the program, when it is launched. Just click on Run → Run Configurations..., select the corresponding run configuration and enter the arguments into the Program arguments text field.
-
Enum DeclarationsTifig's parser can now parse enum declarations.
-
Auto IndentationThe editor now includes a basic auto-edit strategy that automatically performs "smart" indentation based on the code that the user is typing.
-
WizardsIn Tifig 0.1.0 new Swift files had to be created with the generic "New File" wizard, which was a bit inconvenient. This release contains wizards to create new Swift classes, structs, enums and protocols.
-
HyperlinkingI started to work on the indexer. It is still very basic, but you can already use it to jump from a variable / function reference to its declaration. Just hold down CMD / CTRL and click on an identifier. If the indexer is able to resolve the binding for that identifier, the cursor should jump to the corresponding declaration.
AUR Package for Tifig
Hansruedi Patzen has created an AUR Package for Tifig. This should simplify the installation of Tifig on Arch Linux.
Head over to the Download page for more information.
Thanks Hansruedi!
Tifig Issue Tracker
You have downloaded and tested Tifig, but you just miss that one feature you constantly used in other IDEs? Or you have found a bug in one of our releases?
Part of the solution is here for you now!
We opened the official Tifig Issue Tracker.
Report your findings to us and we will give our best to fulfil your wishes.
Tifig 0.8.0 - Alpha Release
Today, we are happy to release version 0.8.0 of Tifig! The new alpha release contains the following changes:
As always, you can download the latest version of Tifig from the Download page. Also, some of the new features are explained in our brand-new Getting Started section.
Happy new year!
Tifig 0.7.0 - Alpha Release
Today, I released version 0.7.0 of Tifig. The new alpha release contains the following changes:
As always, you can download the latest version of Tifig from the Download page.
Tifig 0.6.0 - Alpha Release
Today, I uploaded version 0.6.0 of Tifig. The new alpha release contains the following changes:
As always, you can download the latest version of Tifig from the Download page.
Tifig 0.5.0 - Alpha Release
Today, I am very happy to finally release a new version of Tifig. Version 0.5.0 contains the following changes:
As always, you can download the latest version of Tifig from the Download page.
Tifig 0.4.0 - Alpha Release
Today, I released version 0.4.0 of Tifig. The new alpha release contains the following changes:
As always, you can download the latest version of Tifig from the Download page.
Tifig 0.3.0 - Alpha Release
I just uploaded version 0.3.0 of Tifig. The new alpha release contains the following changes:
As always, you can download the latest version of Tifig from the Download page.
Install Tifig using Homebrew
Mac users can now install Tifig using Homebrew. In order to install the current version, execute the following commands in your terminal:
brew update
brew cask install tifig
I will release a new version of Tifig next week. However, it will only be a minor release as I am currently busy writing the documentation for my term project.
Tifig 0.2.0 - Alpha Release
It has been three weeks since the initial Tifig release and as I wrote in the FAQ, I want to put out new alpha versions regularly. So today it’s time to release Tifig 0.2.0 which contains the following improvements:
As always, you can download the latest version of Tifig from the Download page.
Tifig 0.1.0 - Alpha Release
Today, I am happy to release the first alpha version of Tifig, a new Eclipse-based IDE for Swift. It is still at a very early stage of development, but it is already possible to write, build and run simple Swift programs.
My main goal for Tifig is for it to become a solid, extendable, cross-platform Swift IDE with good refactoring tools. Since Xcode is primarily used for the development of iOS and Mac apps, Tifig may become an interesting choice for web developers who want to use Swift on the server.
I am working on Tifig as part of my master thesis at HSR and I also have a part-time job at the Institute for Software, where we create Cevelop among other things.
You are welcome to download Tifig and try it on your system. If you have any suggestions or bug reports, you can send me an email or a DM on Twitter. Any feedback is highly appreciated. Please keep in mind however, that a lot of essential features are still missing or incomplete. For more information about Tifig, please read the FAQ page.