Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Scripting in Swift (realm.io)
73 points by _bkgg on July 5, 2015 | hide | past | favorite | 28 comments


Earlier this year, I read a couple Swift scripting blogs and decided to create a script to generate my Go data structure for my little Swift "search engine":

http://www.h4labs.com/dev/ios/swift.html

Here's the script that generates the Go data structure:

https://github.com/melling/SwiftResources/blob/master/bin/ge...

Simply having a few scripts makes it easier to update my site.

Btw, here are the other blogs:

https://medium.com/swift-programming/1-learn-swift-by-runnin...

http://www.strathweb.com/2014/06/using-swift-general-purpose...

http://cocoaheads.tv/scripting-with-swift-by-blake-merryman/


IMHO This is a pretty bad idea right now... I just had to port a swift "scripting" project to Python a month ago.


Why?


Because if you're scripting something out, it's very possible that you'll need to run it outside of a Mac in no time.

Plus, there's no decent dependency management yet and you can't compare the amount of external libraries commonly used for scripting with languages like Python or Ruby.

Scripting out with Swift sounds to me like the usual "Playing with new & Shiny". Which can be OK if you're just playing around, but I wouldn't do it with anything related to a production environment yet.


  Because if you're scripting something out, it's very possible that you'll need to run it outside of a Mac in no time.
Yes, it's still early, but with Swift becoming open source, the portability problem will probably become less of an issue.

  Plus, there's no decent dependency management yet and you can't compare the amount of external libraries commonly used for scripting with languages like Python or Ruby.
Thinking about this, I wonder if it is actually as big of a problem as some may think. Swift has built-in automatic bridging capabilities to both C and Objective-C. Assuming this works the same in the REPL/command line (I haven't verified this), then you can directly call every system library on your platform that is written in C or Obj-C (which is all of them). The need to download external modules like in Python or Ruby seems greatly diminished.

And to the portability question, on a Unix platform in general, the majority of libraries available for the platform are C libraries with all the capabilities you normally would have to get as a separate module for Python or Ruby. Since this is all directly available without separate modules, when you do need a feature not installed on your system, you would simply install a C library with that capability through your system's normal packaging management system or build/compile it yourself.


> there's no decent dependency management yet

What's wrong with CocoaPods?


Well that depends on the point of view, if you're okay with Cocoapods being designed to modify your Xcode project, etc etc. That should be fine. Again, all of this is a pretty big overhead to just 'script out' something.


The Xcode project integration is optional and can be disabled by passing --no-integrate to the install. Like so

pod install --no-integrate


Nothing. Neither with Carthage. The problem is that they rely on the project configuration (Cocoapods requires also an xcode workspace on top of that). It's a bit overkill for just a script.


Oh, I just reached the point where Ayaka talks about Carthage. That's a pretty straightforward solution, nice.


I usually use bash or ruby to do scripting, but I think is a good idea to use the power of Swift to this task.


Yeah, I’m actually surprised Apple hasn’t made a play for this from day 1 since developing iOS/OS X often leads to writing/maintaining a bunch of home-made or 3rd-party scripts (usually in Ruby), making app development require not only knowing Objective-C & Cocoa but also some scripting language. After all if Swift is all about making it easier for more people to build apps more easily, this seems like a worthwhile use-case to go after.


The Swift standard library is not yet up to snuff for that, you still need to know Cocoa to do basically anything high-level. Thankfully I know Foundation better than I do straight-up POSIX, so that's tenable for me, but it's not for most people who want something script-y.


Not only that, but you also need to know the hocus pocus to bridge between (Obj)C and Swift. And let's not forget that the Cocoa header files are browsable, thus enabling “discoverability”, while Swift is completely obscure in that respect.


>Yeah, I’m actually surprised Apple hasn’t made a play for this from day 1 since developing iOS/OS X often leads to writing/maintaining a bunch of home-made or 3rd-party scripts (usually in Ruby), making app development require not only knowing Objective-C & Cocoa but also some scripting language.

Define "often".

Besides, Swift wasn't even that ready for application develoment from day 1.


I recently used someones template tool to generate some methods in Swift but with some erb-like syntax to actual Swift code.

It was actually more pleasant than I thought, and I usually use Ruby for this. Might do this more often in the future.

But Ruby still has the benefit with gem install that can get you anything from a twitter client to an IRC-bot lib.


Cool to see Swift being used outside of XCode


This is nice, however I'm skeptical as to the virtues of video as a presentation format for this kind of content. I'd have vastly preferred a written document.


I'm not sure what you're expecting here. This was a conference talk, then someone recorded it and made a transcript. It's not like someone thought, "I'm going to present this content using video instead of writing it," and then recorded themselves talking to their camera.


Will Apple ship Swift as OS on Linux this year as they promised ?


Considering I've seen this said multiple times in Swift post on HN, I have to ask, why do you keep asking? From what I can remember they said It would be there by Fall...its clearly not fall yet, so why the impatience?


Based on prior Apple behavior, they will first ship iOS and OS X, and then they do all their open source drops after the releases.

Presumably, new iOS and OS X will ship this fall, so the open source drops will come soon after. Hopefully fall, but winter at the latest.


I expect a Linux port to be made available, but did they actually promise that? From what I can tell, they promised the open source part, and announced their intention to have ports to OS X, iOS and Linux (https://developer.apple.com/swift/blog/?id=29)


In the big WWDC keynote, they said they wanted to help kick things off with a Linux port this year.


That's exactly what I said: intent, not promise.


Probably? This article doesn't address that one way or the other.


... Swift as OS...

Whatever does that mean? Swift is not an operating system.


I think OS == Open Source in this case.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: