Dasturlash

Jank: Clojure Dialekti C++ Interop bilan

23-oktabr, 2026, 07:180 ko'rish3 daqiqa o'qish
Jank: Clojure Dialekti C++ Interop bilan

Jank — bu Clojure tilining C++ bilan integratsiyaga ega dialekti. Bu til C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi. Ushbu til, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi. Ushbu til, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

Jankning afzalliklari

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

  • C++ interop imkoniyatlari: Jank, C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi.
  • REPL-dan foydalanish: Jank, REPL-dan foydalanish imkoniyatini taklif qiladi, bu esa dasturchilar uchun juda qulay.
  • C++ type systemidan foydalanish: Jank, C++ type systemidan foydalanish imkoniyatini taklif qiladi, bu esa dasturchilar uchun juda qulay.

Jankning ishlash prinsipi

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

(ns my.app.filesystem
  (:include "boost/filesystem.hpp")
  (:refer-global :rename {boost.filesystem.file_size file-size}))

(defn file-info [file-path]
  (try
    (let [bytes (file-size (cpp/cast std.string file-path))]
      {:path file-path
       :size bytes})
    (catch boost.filesystem.filesystem_error e
      {:path file-path
       :error (.what e)})))

(file-info "/etc/passwd")
; {:path "/etc/passwd", :size 4025}

(file-info "/root/.bash_history")
; {:path "/root/.bash_history"
;  :error "boost::filesystem::file_size: Permission denied [system:13]: \"/root/.bash_history\""}

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

(defproject imgui+glfw "0.1-SNAPSHOT"
  :dependencies [[org.jank-lang.commons/imgui-glfw-sys "2026.06-6"]
                 [org.jank-lang.commons/imgui-opengl2-sys "2026.06-6"]
                 [org.jank-lang.commons/gl-sys "2026.06-1"]]
  :plugins [[org.jank-lang/lein-jank "2026.06-2"]]
  :middleware [leiningen.jank/middleware]
  :main imgui+glfw.main
  :profiles {:base {:jank {:target-dir "target/debug"
                           :optimization-level 0}}
             :release {:jank {:target-dir "target/release"
                              :optimization-level 3}}})

Jankning foydalanish sohalari

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

(ns imgui+glfw.main
  (:include "GLFW/glfw3.h"
            "imgui.h" "imgui_impl_glfw.h" "imgui_impl_opengl2.h"))

(defn -main []
  (cpp/glfwInit)

  (let [window* (cpp/glfwCreateWindow 400 300
                                      "jank"
                                      cpp/nullptr cpp/nullptr)]
    (cpp/glfwMakeContextCurrent window*)
    (cpp/ImGui.CreateContext)
    (cpp/ImGui_ImplGlfw_InitForOpenGL window* true)
    (cpp/ImGui_ImplOpenGL2_Init)

    (while (cpp/! (cpp/glfwWindowShouldClose window*))
      (cpp/glfwPollEvents)
      (cpp/ImGui_ImplOpenGL2_NewFrame)
      (cpp/ImGui_ImplGlfw_NewFrame)
      (cpp/ImGui.NewFrame)

      (when (cpp/ImGui.Begin "jank")
        (cpp/ImGui.Text "Hello, jank and imgui!"))
      (cpp/ImGui.End)

      (cpp/ImGui.Render)
      (cpp/ImGui_ImplOpenGL2_RenderDrawData (cpp/ImGui.GetDrawData))
      (cpp/glfwSwapBuffers window*))

    (cpp/glfwTerminate)))

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

Xulosa

Jank, Clojure tilining C++ bilan integratsiyaga ega dialekti. U C++ interop imkoniyatlarini taklif qiladi, shu bilan birga, Clojure tilining barcha afzalliklarini saqlab qoladi. Jank, C++ interop imkoniyatlarini taklif qiladigan yagona til hisoblanadi.

Asl manba: jank-lang.org

Manba: Hacker News
#jank #clojure #C++ #interop #programming
Telegram da muhokama qilish